我写过这个随机显示小星形图形的东西,将它们放在屏幕上,然后移除它们。我遇到了一个问题,虽然在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);
}
}
答案 0 :(得分:1)
您的补间被垃圾收集器拾取,您需要做的是创建一个全局数组来存储您的补间后创建它们,这样垃圾收集器就不会得到它们。
var tweens:Array = [];
然后添加补间
var tweenStar:Tween = new Tween(newStar, "y", None.easeOut, yPosition, stage.stageHeight, 4, true);
tweens.push(tweenStar)
如果可能的话,使用TweenLite,它比Adobe的标准补间更好,你不必担心丢失补间到垃圾收集器。