Actionscript 3 AS3帧脚本立即执行,而不是在指定时执行
我有下面的代码,它应该添加一个Actionscript 3 AS3帧脚本立即执行,而不是在指定时执行,actionscript-3,flashdevelop,flash-cs6,Actionscript 3,Flashdevelop,Flash Cs6,我有下面的代码,它应该添加一个MovieClip,并向MovieClip添加一个帧脚本,在剪辑播放完毕后执行。但是,下面显示的代码会在添加MovieClip后立即触发帧脚本,我不知道为什么 function debugClick(e:MouseEvent) : void { nextLevAnim = new NextLevelAnim(); gfx.addChild(nextLevAnim); nextLevAnim.addFrameScript(nextLevAnim.t
MovieClip
,并向MovieClip
添加一个帧脚本,在剪辑播放完毕后执行。但是,下面显示的代码会在添加MovieClip
后立即触发帧脚本,我不知道为什么
function debugClick(e:MouseEvent) : void
{
nextLevAnim = new NextLevelAnim();
gfx.addChild(nextLevAnim);
nextLevAnim.addFrameScript(nextLevAnim.totalFrames, NextLevel);
}
function NextLevel() : void
{
nextLevAnim.addFrameScript(nextLevAnim.totalFrames, null);
// Actions....
}
我尝试过使用更简单的示例,效果很好,
MovieClip
有21帧长,我尝试过通过totalFrames
和totalFrames-1
触发帧脚本,没有任何想法 在这种情况下,什么是totalFrames
变量?您是否尝试过trace()
it?我非常确定它没有包含nextLevAnim
中总帧数的正确值,您可能应该使用nextLevAnim.totalFrames
。嗯,我没有使用过多少addFrameScript
,所以我无法判断是什么导致了问题,但您可以尝试使用hack
使用OneInterFrame侦听器并检查当前帧是否等于帧数(-1)。
这并不理想,但如果你一直坚持下去,它可能就行了
就
addFrameScript
而言,我的猜测是它不起作用,因为addMovieClip直到循环的渲染部分才生效,所以添加的子帧的总帧数仍然为0。您可以为OnAddedStatage
或onAdded
添加侦听器,并在MovieClip
初始化后添加addFrameScript事件处理程序很抱歉,这是一个打字错误,应该是nextLevAnim.totalFrames
。我使用trace来确定函数NextLevel()
是在框架脚本声明时调用的,而不是在nextLevAnim完成播放时调用的。确切的意思是什么?我尝试了totalFrames-1
,得到了相同的结果。这意味着它是nextLevAnim.totalFrames-1。你是否在NextLevelAnim中包含了stop()?这就是我现在所做的,并不理想,但如果它有效,它就有效!