永发信息网

AS3.0中关于Tween类looping的问题

答案:1  悬赏:0  手机版
解决时间 2021-07-30 05:05
  • 提问者网友:暗中人
  • 2021-07-29 18:49

我写了一段代码

package {
import flash.display.Sprite;
import fl.transitions.easing.*;
import fl.transitions.*;
public class BackTween extends Sprite {
public function BackTween() {
var ball1=Ball();
var ball2=Ball();
var ball3=Ball();
ball1.x=50;
ball1.y=50;
addChild(ball1);
ball2.x=50;
ball2.y=150;
addChild(ball2);
ball3.x=50;
ball3.y=250;
addChild(ball3);
var myTween1:Tween=new Tween(ball1,"x",Back.easeIn,ball1.x,400,3,true);
var myTween2:Tween=new Tween(ball2,"x",Back.easeOut,ball2.x,400,3,true);
var myTween3:Tween=new Tween(ball3,"x",Back.easeInOut,ball3.x,400,3,true);
myTween1.looping=true;
myTween2.looping=true;
myTween3.looping=true;
}
private function Ball():Sprite {
var sp:Sprite=new Sprite ;
sp.graphics.beginFill(Math.random()*0xFFFFFF);
sp.graphics.drawCircle(0,0,30);
sp.graphics.endFill();
return sp;
}
}
}

当运行后,小球一般运动两次就不动了,looping不是无限循环吗?高手指点。

最佳答案
  • 五星知识达人网友:动情书生
  • 2021-07-29 20:01

package {
import flash.display.Sprite;
import fl.transitions.easing.*;
import fl.transitions.*;
public class BackTween extends Sprite {


private var tweenObj=new Object();
public function BackTween() {
var ball1=Ball();
var ball2=Ball();
var ball3=Ball();
ball1.x=50;
ball1.y=50;
addChild(ball1);
ball2.x=50;
ball2.y=150;
addChild(ball2);
ball3.x=50;
ball3.y=250;
addChild(ball3);
tweenObj[1]=new Tween(ball1,"x",Back.easeIn,ball1.x,400,3,true);
tweenObj[2]=new Tween(ball2,"x",Back.easeOut,ball2.x,400,3,true);
tweenObj[3]=new Tween(ball3,"x",Back.easeInOut,ball3.x,400,3,true);
tweenObj[1].looping=true;
tweenObj[2].looping=true;
tweenObj[3].looping=true;
}
private function Ball():Sprite {
var sp:Sprite=new Sprite ;
sp.graphics.beginFill(Math.random()*0xFFFFFF);
sp.graphics.drawCircle(0,0,30);
sp.graphics.endFill();
return sp;
}
}
}



因为Tween是局部变量,所以Tween实例会被当作没有被引用,当系统资源不够用时,垃圾回收器就开始回收了,要解决这个问题,只要让每个Tween的实例都被引用,垃圾回收器就不会回收了。除了tween,其他类也会有这种情况,如果你的对象被提前回收导致出现错误,那就要检查下是不是因为你的对象没有引用而被垃圾回收器给回收了

我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯