Tweenクラスを使っていると、途中でとまってしまうことがある。よくわからない現象だったんだけど、どうやら生成した Tween のインスタンスがガベージコレクションに掃除されてしまうのが問題らしい。
生成した Tween インスタンスは、そのままでも動いてくれるが、変数なり何なりに入れておかないと、すぐ掃除されてしまう様子。
new Tween(ball, 'x', Regular.easeOut, ball.x , 300, 100, false);
new Tween(ball, 'y', Regular.easeOut, ball.y , 100, 100, false);
でも、たとえば以下のように関数の中にローカル変数を定義して、そこに入れておいても、やっぱり掃除されてしまい、あまり状況は変わらない。
private function run():void
{
var t1:Tween = new Tween(ball, 'x', Regular.easeOut, ball , 300, 100, false);
var t2:Tween = new Tween(ball, 'y', Regular.easeOut, ball , 100, 100, false);
}
それならばとメンバ変数として定義し、そこにインスタンスを入れてあげてみた。これなら、クラスが破棄されない限り、生きていてくれるだろう。
var t1:Tween;
var t2:Tween;
private function run():void
{
t1 = new Tween(ball, 'x', Regular.easeOut, ball.x , 300, 100, false);
t2 = new Tween(ball, 'y', Regular.easeOut, ball.y , 100, 100, false);
}
こういうやり方が正しいのかはわからないし、他にもっとやるべきことはあるだろうけど。
0 件のコメント:
コメントを投稿