【发布时间】:2014-04-26 02:04:53
【问题描述】:
我在第一帧中设置了三个按钮,它们应该可以切换帧。当程序第一次运行时,没有错误,我可以单击任何按钮并最终到达我想要的位置。但是,当返回到第一帧时,按钮不再起作用。舞台监听器仍然有效。我添加了“Clicked”输出以检查是否调用了该函数,但事实并非如此。我知道我禁用了代码中的按钮,但只有在单击该按钮之后才能完成任务。我应该提一下,我在时间线上没有代码,但在单独的文档中。这是我的代码:
package{
import flash.display.MovieClip;
import flash.events.MouseEvent;
import flash.events.Event;
import flash.display.SimpleButton;
public class DocumentClass extends MovieClip
{
public var matteOppgave:Boolean = false;
public var engelskOppgave:Boolean = false;
public var flaggOppgave:Boolean = false;
public function DocumentClass()
{
stop();
btnBok.addEventListener(MouseEvent.CLICK, matte);
btnFlagg.addEventListener(MouseEvent.CLICK, flagg);
btnPc.addEventListener(MouseEvent.CLICK, engelsk);
stage.addEventListener(Event.ENTER_FRAME, sjekk);
btnBok.enabled = true;
btnPc.enabled = true;
btnFlagg.enabled = true;
function matte(evt:MouseEvent)
{
gotoAndStop(2);
frame2();
trace("Clicked");
}
function engelsk(evt:MouseEvent)
{
gotoAndStop(3);
frame3();
trace("Clicked");
}
function flagg(evt:MouseEvent)
{
gotoAndStop(4);
frame4();
trace("Clicked");
}
function sjekk(evt:Event)
{
if(matteOppgave == true && engelskOppgave == true && flaggOppgave == true)
{
gotoAndStop(5);
}
if(matteOppgave == true)
{
btnBok.alpha = 0.5;
btnBok.enabled = false;
låsEin.alpha = 0;
}
if(engelskOppgave == true)
{
btnPc.alpha = 0.5;
btnPc.enabled = false;
låsTo.alpha = 0;
}
if(flaggOppgave == true)
{
btnFlagg.alpha = 0.5;
btnFlagg.enabled = false;
låsTre.alpha = 0;
}
}
}
【问题讨论】:
-
如何回到第一帧?
-
当程序运行完函数中的所有代码(frame2、frame3 和 frame4)时,我假设它在第一个函数(DocumentClass)中继续......舞台的监听器在回到frame1,所以我想它是这样工作的。如果你的意思是在时间线上,那么我在函数的末尾有一个 gotoAndStop(1)。
-
"...在函数的末尾。"这是什么意思?在单击每个按钮后,您会自动从第 2、3 和 4 帧返回到第 1 帧?此外,如何将“matteOppgave”、“engelskOppgave”和“flaggOppgave”设置为“真”。如果您一开始就提供了所有这些信息,那么您现在可能已经有了答案!
-
点击btnBok时,播放frame2,用户解决了一个任务,matteOppgave设置为true,显示时间轴上的第一帧(带有gotoAndStop(1),frame2功能完成。当 frame2 函数完成后,代码继续在 DocumentClass 函数中。
标签: actionscript-3 function button mouseevent listener