addCaller 注意点
2010.12.9 木曜日
Tweener ver.1.33.74(それ以外は未確認)でaddCallerを使う時の注意点。addCallerでtransitionを無指定のままにしておくとなぜか遅延されます。下記swfはキーボードの「1」を押した時がtransition指定無し、「2」「3」を押したときは指定有りでaddCallerを呼び、イベントが発生するたびに円を右に動かします。
This movie requires Flash Player 9
//Main.as
package {
import caurina.transitions.Tweener;
import flash.display.Graphics;
import flash.display.MovieClip;
import flash.events.KeyboardEvent;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
public class Main extends MovieClip {
private var Circle_mc:MovieClip;
public function Main():void {
//円
Circle_mc = new MovieClip();
Circle_mc.graphics.beginFill(0x999999, 1);
Circle_mc.graphics.drawCircle(0, 0, 50);
Circle_mc.x = 170;
Circle_mc.y = stage.stageHeight / 2;
this.addChild(Circle_mc);
//説明文
var Text_tf:TextField = new TextField();
Text_tf.textColor = 0xFFFFFF;
Text_tf.text = "KeyDown (ON/OFF)n1 : nonen2 : linearn3 : easeInOutCubic";
Text_tf.x = Text_tf.y = 10;
Text_tf.autoSize = TextFieldAutoSize.LEFT;
this.addChild(Text_tf);
//リスナー登録
stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyDown);
}
//キーボードが押された場合
private function KeyDown(e:KeyboardEvent):void {
//移動
if (e.keyCode == 49 || e.keyCode == 97) Move("");
else if (e.keyCode == 50 || e.keyCode == 98) Move("linear");
else if (e.keyCode == 51 || e.keyCode == 99) Move("easeInOutCubic");
}
//移動
private function Move(_type:String):void {
//初期化
Tweener.removeTweens(this);
Circle_mc.x = 170;
//トランジションが指定されている場合
if (_type != "") {
Tweener.addCaller(this, {
count :30,
time :3.0,
transition :_type,
onUpdate :Update
});
}
//トランジションが無指定の場合
else {
Tweener.addCaller(this, {
count :30,
time :3.0,
onUpdate :Update
});
}
//トゥイーン中
function Update():void {
Circle_mc.x += 10;
}
}
}
}
Posted by tmdf|ActionScript