Class as3 tween运行时错误

Class as3 tween运行时错误,class,debugging,runtime,tween,Class,Debugging,Runtime,Tween,您好,=) 我在这方面已经有相当一段时间了,很遗憾遇到了我的对手。为了简洁起见,我会快点的。我有一个document类,它运行一个计时器,通过编程加载一个movieclip和一个for循环,将它们一个叠在另一个上。然后一个动态的二人组将他们从舞台的一端移动到另一端。问题就在这里。当我运行swf时,偶尔会有一两个tween中途停下来,我不知道这是为什么 文档文件 package { import flash.display.MovieClip import flash.events.Event

您好,=)

我在这方面已经有相当一段时间了,很遗憾遇到了我的对手。为了简洁起见,我会快点的。我有一个document类,它运行一个计时器,通过编程加载一个movieclip和一个for循环,将它们一个叠在另一个上。然后一个动态的二人组将他们从舞台的一端移动到另一端。问题就在这里。当我运行swf时,偶尔会有一两个tween中途停下来,我不知道这是为什么

文档文件

package {


import flash.display.MovieClip
import flash.events.Event;
import flash.utils.Timer;
import flash.utils.*;
import flash.events.*;

import fl.transitions.Tween;
import fl.transitions.easing.*; 
import fl.transitions.easing.None;
import fl.transitions.TweenEvent;

public class Game extends MovieClip {

    //varibles 
    public var brickStack1:Array = new Array(1);
    public var brickStack2:Array = new Array(1,1);
    public var brickStack3:Array = new Array(1,1,1);
    public var brickStack4:Array = new Array(1,1,1,1);
    public var brickStack5:Array = new Array(1,1,1,1,1);
    public var arrayOfBricks:Array = new Array(brickStack1,brickStack2,brickStack3,brickStack4,brickStack5);
    public var brickLoader:Timer = new Timer(2000,0);
    //public var arrayLength:int = 0;
    public var brickStack:int = 0;


    public function Game() {

        trace("game");
        //addEventListener (TimerEvent.TIMER , loop);
        brickLoader.addEventListener (TimerEvent.TIMER , loop);
        brickLoader.start();



    }


    function loop(e:TimerEvent):void {

        //declare a varible for the for loop with Math.random
        brickStack = Math.floor(Math.random() * 5) ;
        trace(brickStack);
        var arrayLength:int = arrayOfBricks[brickStack].length;
        //arrayOfBricks[brickStack];


        for(var i:int = 0;i < arrayLength; i++){
            //if(arrayOfBricks[brickStack-1][i] == 1) {
                var obj:Brick = new Brick();
                obj.x = stage.stageWidth + obj.width;
                obj.y = (i*40);
                addChild(obj);
                var brickTween = new Tween( obj,"x", None.easeNone                , obj.x,obj.x - (stage.stageWidth + obj.width*2), 4, true);



        }

        if(obj.x < stage.stageWidth + obj.width*2){
                obj.parent.removeChild(obj);
             }


    }

}
将此代码放在Brick类中,但我不知道如何在其类的源代码中引用Brick


非常感谢您的帮助。非常感谢您提供与其他问题相同的解决方案:

垃圾收集时,吐温通常过早停止

例如:

var tweenObject:Tween;
brickTween = new Tween( firstTweenParams ); // first tween added
brickTween = new Tween( secondTweenParams ); /* second tween added 
and first MARKED for garbage collection (removal)*/
当标记为垃圾收集时,tween将工作一段时间直到被收集(销毁)。这可能发生在吐温完成他的工作之前

有两种解决方案:

1) 您应该存储所有工作的二人组的数组,以避免出现问题。然后从数组中清除已计算出的元素

2) 使用tween库,如:

格特温

吐温马克斯

var tweenObject:Tween;
brickTween = new Tween( firstTweenParams ); // first tween added
brickTween = new Tween( secondTweenParams ); /* second tween added 
and first MARKED for garbage collection (removal)*/