Class as3 tween运行时错误
您好,=) 我在这方面已经有相当一段时间了,很遗憾遇到了我的对手。为了简洁起见,我会快点的。我有一个document类,它运行一个计时器,通过编程加载一个movieclip和一个for循环,将它们一个叠在另一个上。然后一个动态的二人组将他们从舞台的一端移动到另一端。问题就在这里。当我运行swf时,偶尔会有一两个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
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)*/