分类: 系统运维
2011-12-24 10:49:18
as3 tween类 没有完成就停止 垃圾回收在作怪
在程序中使用了Tween类,结果没有完成就停止了,
TweenEvent.MOTION_FINISH事件根本无法被触发。
错误无法找到,郁闷。在http://www.raoway.com/blog/上,
发现作者遇到了相同的问题:tween类不正常是不是和垃圾回收器有关,
通过实验发现,确实是因为tween还没有结束就给回收了原来的代码。
其中库里有个叫MC的元件(这样的用法在as2是没有错误的)
ActionScript代码
import fl.transitions.easing.*;
import fl.transitions.*;
var n=10000//循环次数
for(var
i=0;i
{
var mc=new MC();
mc.x=50*i;
mc.y=100;
addChild(mc);
var tween:Tween=new Tween(mc, ‘alpha’, Regular.easeOut, 0, 1,1, true);
tween.addEventListener(TweenEvent.MOTION_FINISH, finishHandle)
}
var j=0
function finishHandle(e:Event)
{
j++;
trace(j)
}
mc.x=50*i;
mc.y=100;
addChild(mc);
tweenObj[i] = new Tween(mc, ‘alpha’, Regular.easeOut, 0, 1, 1, true);
tweenObj[i].addEventListener(TweenEvent.MOTION_FINISH, finishHandle)
}
var j=0
function finishHandle(e:Event)
{
j++;
trace(j);
}
除了tween,其他类也会有这种情况,如果你的对象被提前回收导致出现错误,
那就要检查下是不是因为你的对象没有引用而被垃圾回收器给回收了。