2012-07-31 40 views
1

我已经写了这个东西,随机显示少量星形图形,在屏幕上补间它们,然后删除它们。我有一个问题,虽然在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

你充斥着正在被垃圾收集器拾起,你需要做的是建立一个全球性的阵列来存储你的补间创建它们经过这么垃圾colletor没有什么抓住他们。

var tweens:Array = []; 

,然后添加补间它

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

此外,如果可能的使用TweenLite的,这是好了很多,然后Adobe的标准补间,你将不必担心失去充斥着垃圾回收。