AS3。如何在时间轴框架中使用公共变量?

时间:2014-01-25 22:28:17

标签: actionscript-3 variables actionscript public timeline

我正在创建游戏,在主类中我声明了变量:public var attack:Number = 0;这是动态值(总是在变化),我需要在时间轴的最后一个动画帧中将它设置为0。

当我尝试在最后一帧中使用attack=0时,我收到错误:1120: Access of undefined property attack.

感谢您的回答。

2 个答案:

答案 0 :(得分:1)

您也可以使用事件:

在你的最后一帧:

dispatchEvent(new Event("lastFrameCustomHandler", true, true));

代码:

addEventListener("lastFrameCustomHandler", handleLastFrame); 
function handleLastFrame (event:Event):void 
{
  attack = 0;
}

答案 1 :(得分:0)

尝试使用主要课程中的addFrameScript

asset.addFrameScript( asset.totalFrames-1, function():void { attack = 0; } );

详细说明addFrameScript()如何工作,无论何时从库中编译MovieClip,如果你没有将类与它相关联,编译器会在幕后为你创建一个。 addFrameScript()是MovieClips时间轴和相关脚本之间的未记录的绑定。当您在addFrameScript()上运行MovieClip时,请使用参数( frameNumber - 1, functionToCall )对其进行设置。您的MovieClip时间轴从第1帧开始,但在引用时这实际上是作为第0帧读取的(类似于存储容器从索引0开始的工作方式)。

在我的例子中,我传递了所谓的匿名函数。我为addFrameScript()中的函数参数创建了一个函数,当我们到达指定的帧时,它会将变量攻击设置为0。当然,你不必这样做。假设你有一个功能:

function setAttackToZero():void {
    attack = 0;
}

您可以轻松地将其传递到addFrameScript参数:

asset.addFrameScript( asset.totalFrames-1, setAttackToZero );