カテゴリー
Develop

TweenerのaddCallerをクリアする

オデのためのオデによる “apeirophobia”です。
さて
TweenerでaddCallerを途中で解除したいぜ!というときにどすればええのん?
という質問をされたのでいておきます。
addCallerの場合はproperyが設定されていないのでオデはざっくりと

で対応しています。
ただこれだとその要素に対して設定されているすべてのTweenが削除されてしまいますが・・。
オデは基本的にaddCallerを停止させるときはremoveのタイミングで、他のも一括で削除することが多いからそんなに不便さは感じていませんけど、まぁ個別に細かく制御したい場合はaddCallerを割り当てるためのSprite(Shapeでもいいのかしら?)を作ってそこで管理するって感じですかね?
そうする場合の注意点なのですが、


そのDisplayObjectに複数のtweenを割り当て、特定のプロパティのみをクリアしようとした場合、

すると

TypeError: Error #1009: 参照のプロパティまたはメソッドにすることはできません。
at caurina.transitions::Tweener$/affectTweens()
at caurina.transitions::Tweener$/removeTweens()
at test_addCallerClear_fla::MainTimeline/clearCaller()

が戻ってきます。
これ自分自身(this)だとにならないんですけどね、多分onCompleteの参照が良くないんでしょうけど・・。
なのでaddCallerを管理するばやいは

という風にきちんとaddCallerだけを管理するようにしてあげてください。
この辺はaddCallerがなんか戻り値とか戻してくれればいいんですけどねー。まぁメモリのを考えるとあまり参照を持たせたくないんだと思いますが・・。自分で昔作っていたモーションエンジンはそういうつくりにしていたので、任意のタイマーをクリアとかできたんだけど、その辺に少し不便さを感じます。
今後の対応に期待。
※もし他の方法があれば教えてください。エロイ人。

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です