我试图动画一个像轮子一样无限旋转的六边形:
function rotateCW(e:TweenEvent = null):void{
var hexRot:Tween = new Tween(this, "rotationZ", None.easeNone, 0, 360, 2, true);
hexRot.addEventListener(TweenEvent.MOTION_FINISH, rotateCW);
}
由于一些奇怪的原因,动画在经过一系列重复后停止。在它停止之前,它会在2到600次之间变化。
我的应用程序中有很多不同的事件被触发,这可能导致MOTION_FINISH事件无法触发或未被捕获吗?
谢谢!
答案 0 :(得分:1)
首先,您应该定义hexRot
并听取其功能的MOTION_FINISH外观。通过这样做,每个hexRot都会保留在内存中,因为它附加了一个监听器。
这可能无法解决您的问题,但这将是一种更清晰的写作方式,您将不那么容易受到奇怪行为的影响。
private var hexRot:Tween;
/**
*Run only once
*/
function init():void {
hexRot = new Tween(this, "rotationZ", None.easeNone, 0, 360, 2, true);
hexRot.addEventListener(TweenEvent.MOTION_FINISH, rotateCW);
}
function rotateCW(e:TweenEvent = null):void{
hexRot.start();
}
答案 1 :(得分:1)
flash垃圾收集器已清理你的hexRot变量,因此动画停止了。要解决这个问题,请使用Kodiak提供的解决方案:)当全局声明变量时,只要不在变量中添加任何新内容,就不会收集它。