user1366560
user1366560

Reputation: 15

Movieclips freeze during tween

I've written this thing that displays little star graphics randomly, tweens them down the screen, and then removes them. I'm having a problem though where after maybe 10 seconds some of the stars freeze in place mid tween and then just stay there.

Here's my code:

// 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);
}
}

Upvotes: 1

Views: 322

Answers (1)

Taires
Taires

Reputation: 66

Your tweens are being picked up by the garbage collector, what you need to do is create a global array to store your tweens after you create them so the garbage colletor does not get them.

var tweens:Array = [];

and then add tweens to it

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

Also if possible use TweenLite, it's a lot better then Adobe's standard tween, and you won't have to worry about losing tweens to the garbage collector.

Upvotes: 1

Related Questions