AS3.0のTweenが動作しない場合の対処
2009-06-30 (火)カテゴリ制作 , 興味関心AS3.0 , FLASH
ここ数日FLASHに触っていて悩んだことメモ。
AS2.0でお世話になりまくったTweenですが、どうもAS3.0ではきちんと動かないで終了してしまう場合があるようです。
対処方法として、各Tweenインスタンスをすべて配列に保持して終了と同時にきちんと削除してあげる必要があります。
Action Script
import fl.transitions.Tween;
import fl.transitions.TweenEvent;
import fl.transitions.easing.*;
var tween_arr:Array = new Array();
var myTween:Tween = new Tween(obj, "alpha", Strong.easeIn, 1, 0, 2, true);
tween_arr.push(myTween); // 配列にTweenインスタンスを保持
myTween.addEventListener(TweenEvent.MOTION_FINISH, onFinish);
function onFinish(e:TweenEvent){
//処理
var myTween:Tween = Tween(e.target);
xDispose(myTween); // 配列からTweenを削除
}
// 配列からTweenインスタンスを削除する関数
function xDispose(obj:Tween):Boolean {
var nLength:int = tween_array.length;
for (var i:int = 0; i<nLength; i++) {
if (tween_array[i] == obj) {
tween_array.splice(i, 1);
return true;
}
}
return false;
}
どうやら「弱い参照」というものをTweenが採用しているためだそうです。詳しくは以下。
Tweenのアニメーションが途中で止まる








7月 15th, 2009 at 12:00 AM
[...] る必要があります。AS3.0のTweenが動作しない場合の対処 | みぞおち [...]