articles

2009 年 8 月 18 日

AS3 円運動のクラス

円運動をさせる場合、軸をずらしたmcを作りrotationを変更していたのですが
やはり基礎的なところなので作っておきました。

CircleMove.as

package {
	import flash.display.Sprite;
	import flash.events.Event;

	public class CircleMove {
		var my_sprite:Sprite;
		var my_radius:uint
		var my_speed:uint;
		var degree:uint=0;
		var centerX=0;
		var centerY=0;
		var speed:uint;
		function CircleMove(sprite:Sprite,radius,speed) {
			my_sprite=sprite;
			my_radius=radius;
			my_speed=speed;
			centerX=my_sprite.x
			centerY=my_sprite.y
			my_sprite.addEventListener(Event.ENTER_FRAME,move);
		}
		function move(event) {
			var radian = Math.PI/180*degree;
			my_sprite.x=centerX+my_radius*Math.cos(radian);
			my_sprite.y=centerY+my_radius*Math.sin(radian);
			degree+=my_speed;
		}
	}
}

flaファイルは

import CircleMove;
var cm=new CircleMove(ball,100,5);

さらに、JSONで渡したかったので継承したクラスを作成しました。
こんなこと普通しなそう・・・

CircleMove2.as

package {
	public class CircleMove2 extends CircleMove {
		function CircleMove2(obj:Object) {
			my_sprite=obj.sprite;
			my_radius=obj.radius;
			my_speed=obj.speed;
			super(my_sprite,my_radius,my_speed);
		}
	}
}

この場合のflaファイルは

import CircleMove2;

var cm=new CircleMove2({sprite: ball,radius:100,speed:5});

さらに、回転開始のオフセットを設定できるようにしました。
CircleMove3.as

package {
	public class CircleMove3 extends CircleMove2 {
		function CircleMove3(obj:Object) {
			degree=obj.degree;
			super(obj);
		}
	}
}

この場合のサンプルflaファイルは

import CircleMove3;

//リンゲージしたクラスBALL
var ball2=new BALL();
var ball3=new BALL();
prepare(ball2);
prepare(ball3);

//準備用の関数
function prepare(mc:MovieClip){
	mc.x=stage.stageWidth/2;
	mc.y=stage.stageHeight/2;
	addChild(mc);
}

var cm2=new CircleMove2({sprite:ball2,radius:100,speed:5});
var cm3=new CircleMove3({sprite:ball3,radius:100,speed:5,degree:180});//180度から開始

となりました。

2009 年 8 月 11 日

AS3 Event.REMOVED記念日

Event.ADDEDがあればEvent.REMOVEDもありますよね。
今日知りました。
タイトルが変なのは自分で検索しやすいようにです。

test_mc.addEventListener(Event.REMOVED,removeAction);
removeChild(test_mc);

function removeAction(event) {
	trace(event.target.name);
}

こないだテレビでやってたクライマーズハイを見ました。

2009 年 7 月 15 日

Event.ADDED記念日

なぜ使ってなかったんでしょうか?Event.ADDED
初めて使う事になりました。存在は知っていたのに。

下記コードは、表示オブジェクト追加時にスケールをもどします。

import caurina.transitions.Tweener;
import caurina.transitions.properties.DisplayShortcuts;
DisplayShortcuts.init();

Tweener.addTween(sample_obj,{time:0,_scale:2});
sample_obj.addEventListener(Event.ADDED,backAddedHandler);

function backAddedHandler(event){
	trace("追加された");
	Tweener.addTween(event.target,{time:1,_scale:1})
}

2009 年 6 月 16 日

AS3 wonderflで気づいたコード1

CATEGORYactionscriptEventLoader   10:30 AM
loader.load( new URLRequest(url) );
//いつも あたらしい変数を作ってました。
addListeners( loader.contentLoaderInfo );
private function addListeners( d :IEventDispatcher ) :void {
 d.addEventListener( IOErrorEvent.IO_ERROR, function(e :IOErrorEvent) :void {} );
 d.addEventListener( HTTPStatusEvent.HTTP_STATUS, function(e :HTTPStatusEvent) :void {} );
}

IEventDispatcherはよく知りません。
loader.contentLoaderInfoを引数として渡すと、受け取るのはIEventDispatcher。
よくわかりません。

 [SWF(backgroundColor="#FFFFFF", frameRate=10)]

これはいったいなんでしょうか。初めて見ました。
外部swfを読み込むときの設定っぽいですが
初めて見ました。

http://wonderfl.kayac.com/

2009 年 4 月 27 日

AS3 背面オブジェクトのMouseEvent

いつもいつも
前面にあるオブジェクトにフォーカスが入って
下にあるオブジェクトがクリックできなかったのでした。

IntractiveObject.mouseEnabled=false;

こんなことかい。