不要になった Tween の対処法

this.t = new Tween(this.foo_mc, "_x", null, 0, 100, 1, true);
this.t = new Tween(this.foo_mc, "_y", null, 0, 100, 1, true);
delete this.t;

上記のスクリプトを実行すると、何が起こると予想されるだろうか。

  1. 何も起こらない
  2. x 移動のみ実行される
  3. y 移動のみ実行される
  4. 2 と 3 が両方実行される

答えは 4。Tween オブジェクトが作られた時点で、__OnEnterFrameBeacon に「あとは任せた!」と投げてしまうから、Tween オブジェクトを上書きしても消してもアニメーションしてしまう。もし、アニメーションの途中で、上記の foo_mc を removeMovieClip() して、再び attachMovie() しても、foo_mc は、アニメーションの動作を引き継いでいる。

なので、不要になった Tween は必ず stop() をしたほうがよい。もしくは、強引に__OnEnterFrameBeacon を removeClip() する。(勿論全てのアニメーションは停止する)。