无法在AS3中推进帧以推进帧

时间:2013-08-26 23:34:49

标签: actionscript-3 flash variables button

我正在创建一个带按钮的测验,我是ActionScript 3.0的新手,但非常熟悉2.0。

我在MC中有一个名为NextQuestion的变量。当它到达某个帧时,它会变为1,然后变回0。

在主时间轴上,当NextQuestion == 1时,它应该是NextFrame();.我不能让它工作,这是我遇到的最后一件事。

这是我的主要代码,有4个按钮,3个错误,1个正确。反馈MC播放动画,当它完成时,它将VAR NextQuestion设置为1,这应该使主时间轴前进到NextFrame。

stop();

right.addEventListener(MouseEvent.CLICK, rightClick1);
wrong1.addEventListener(MouseEvent.CLICK, wrongClick1);
wrong2.addEventListener(MouseEvent.CLICK, wrongClick1);
wrong3.addEventListener(MouseEvent.CLICK, wrongClick1);
feedback1.addEventListener(Event.ENTER_FRAME, answerRight1);

function answerRight1()
{
    if (feedback1.NextQuestion == 1)
{
    trace(feedback1.NextQuestion);
    nextFrame();
}
else
{
    trace("do nothing");
}
 }

function rightClick1(ev:MouseEvent):void
{
trace(feedback1.NextQuestion);
feedback1.gotoAndPlay("right1");
}

function wrongClick1(ev:MouseEvent):void
{
trace("wrong");
feedback1.gotoAndPlay("wrong");
}

非常感谢任何帮助! :)

1 个答案:

答案 0 :(得分:0)

AS3中的nextFrame()方法不会循环播放您的movieClip,它只是将影片剪辑设置为下一帧,前提是下一帧,否则它什么都不做。

您可能希望将nextFrame()重写为:

if (totalFrames == currentFrame)
{
    gotoAndStop(1); // or gotoAndPlay(1) if you need
}
else
{
    nextFrame();
}

这就是为什么影片剪辑可能无法从头开始。

另一件看起来很奇怪的事情是你需要一个FRAME_ENTER事件来检查答案是否正确。您必须在输出日志中包含大量垃圾邮件。我建议你完全抛弃ENTER_FRAME事件监听器,并使用CLICKED事件并从feedback1对象调度事件。

据我所知,当您单击按钮时播放影片剪辑,并且当动画结束时您想要进入下一帧或不执行任何操作。如果是这样,在feedback1对象上,在动画结尾处为标签“right1”添加以下行:

dispatchEvent(new Event("right"));

而不是行feedback1.addEventListener(Event.ENTER_FRAME, answerRight1);有:

feedback1.addEventListener("right", answerRight1);

这样你就不需要检查每一帧的答案,也不需要检查答案是否正确,因为当dispatchEvent(new Event("right"));触发时 - 它总是正确的。

希望我没有误解你的问题:)

相关问题