[AS]progression DoTweenerをinterrupt()するのは大変かも。
SerialListとかのコマンドリスト内にもかけて、とっても便利なDoTweener。
ただし、そのコマンドリストを停止させるときはちょっと注意が必要かも。
具体的には、DoTweenerの含まれているコマンドリストをinterrupt()するとDoTweenerでエラーが吐かれます。
一応、その場で止まってるみたいですが、内部を読めない素人にはエラーという言葉が怖い・・・
というわけで・・・
interrupt()するコマンドにはTweenerを利用するという方法に逃げました。
これだとinterrupt()してもとりあえずエラーは表示されません。
(もちろん内部的に何かエラーが発生してるかはわからんですが・・・)
Tweet
2 Comments
同じ問題に直面して、結構長い間同じように「Tweener逃げ」の生活を送ってましたが、今しがた、原因らしき箇所を見つけました。
DoTweenerクラスの_interrupt()メソッド内、
変更前:_tweenerHelper.removeTweens() を、
変更後:if(_tweenerHelper) _tweenerHelper.removeTweens();
と存在を確認してやるとエラー回避になるようです。
この _tweenerHelperの参照(TweenerHelperクラスのインスタンス)は、DoTweenerのターゲットインスタンス1つに対して、1つだけ作成されているようです(ちょっとあやふやですが・・・)。
なので、
var _list:SerialList = new SerialList(
new DoTweener(mySprite,{x:50,time:10})
,new DoTweener(mySprite,{x:10,time:10})
);
_list.execute();
_list.interrupt();
とすると、_list内をinterruptが伝播していって、各々の子コマンドの_interrupが実行されるのですが、DoTweenerの場合、interrupt実行後に_tweenerHelper = nullとなるようです。
なので、2個目のDoTweenerでは、null返って、エラーが起こる。
・・・という気がします。(鬼トレースと弱小ソース読みで調べただけですが)
>djakarta_trapさん
コメントありがとうございまっす!
中身はまったく見てなかったのですが、_tweenerHelperたるものがあるんですねー
最近はめっきりプログレッション触れられてないのですが、あとで試してみます!