动画片段在补间期间冻结

时间:2012-07-31 19:06:48

标签: actionscript-3 flash tween removechild

我写过这个随机显示小星形图形的东西,将它们放在屏幕上,然后移除它们。我遇到了一个问题,虽然在10秒之后,一些星星在补间中间冻结,然后就在那里。

这是我的代码:

// Create Random Variables.
var xPosition:int;
var yPosition:int;

// Animate Stars.
function stars ():void {
//Defines random starting position for stars.
xPosition = Math.floor(Math.random()*(540))+5;
yPosition = Math.floor(Math.random()*(2))+5;

//Add and position stars.
var newStar:star = new star();
newStar.x = xPosition;
newStar.y = yPosition;
addChild(newStar);

//Tween stars.
var tweenStar:Tween = new Tween(newStar, "y", None.easeOut, yPosition, stage.stageHeight, 4, true);

//Event listener checks star tween.
tweenStar.addEventListener(TweenEvent.MOTION_FINISH, removeStar);

//Remove stars when tween is complete.
function removeStar(e:TweenEvent):void {
    removeChild(newStar);
            tweenStar.removeEventListener(TweenEvent.MOTION_FINISH, removeStar);
}
}

1 个答案:

答案 0 :(得分:1)

您的补间被垃圾收集器拾取,您需要做的是创建一个全局数组来存储您的补间后创建它们,这样垃圾收集器就不会得到它们。

var tweens:Array = [];

然后添加补间

var tweenStar:Tween = new Tween(newStar, "y", None.easeOut, yPosition, stage.stageHeight, 4, true);
tweens.push(tweenStar)

如果可能的话,使用TweenLite,它比Adobe的标准补间更好,你不必担心丢失补间到垃圾收集器。