我正在创建一个带按钮的测验,我是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");
}
非常感谢任何帮助! :)
答案 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"));
触发时 - 它总是正确的。
希望我没有误解你的问题:)