Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3-按钮在重新进入帧时不起作用_Actionscript 3_Function_Button_Mouseevent_Listener - Fatal编程技术网

Actionscript 3 AS3-按钮在重新进入帧时不起作用

Actionscript 3 AS3-按钮在重新进入帧时不起作用,actionscript-3,function,button,mouseevent,listener,Actionscript 3,Function,Button,Mouseevent,Listener,我在第一帧中设置了三个按钮,用来切换帧。当程序第一次运行时,没有错误,我可以单击任何按钮,并在我想要的地方结束。但是,当返回到第一帧时,按钮不再工作。不过,舞台上的听众仍然在工作。我添加了“Clicked”输出,以检查函数是否被调用,而不是被调用。我知道我禁用了代码中的按钮,但只有在单击该按钮并完成任务之后。我应该提到的是,我没有时间线上的代码,而是在一个单独的文档中。这是我的密码: package{ import flash.display.MovieClip; import flash.ev

我在第一帧中设置了三个按钮,用来切换帧。当程序第一次运行时,没有错误,我可以单击任何按钮,并在我想要的地方结束。但是,当返回到第一帧时,按钮不再工作。不过,舞台上的听众仍然在工作。我添加了“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;
            }
        }

    }

我从另一个论坛上发布的解决方案中得到了它。我将我拥有的五个帧制作成movieclips,并使用addChild()和removeChild()来回更改

如何回到第1帧?当程序运行完函数(第2帧、第3帧和第4帧)中的所有代码后,我假设它在第一个函数(DocumentClass)中继续运行。。。舞台的监听器在返回到frame1之后工作,所以我猜它是这样工作的。如果你的意思是在时间轴上,那么我在函数末尾有一个gotoAndStop(1)。“…在函数末尾。”这是什么意思?单击每个按钮后,您会自动从第2、3和4帧返回到第1帧吗?此外,如何设置为“真”您的“MatteOppGiven”、“EngelskoppGiven”和“FlaggoppGiven”。如果您从一开始就提供了所有这些信息,您现在可能已经有了答案!单击btnBok时,播放frame2,用户解决任务,MatteOppGive设置为true,显示时间轴上的第一帧(使用gotoAndStop(1),frame2功能完成。frame2功能完成后,代码在DocumentClass功能中继续。