【问题标题】:AS3 - Buttons do not work upon reentering frameAS3 - 重新进入框架时按钮不起作用
【发布时间】: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


【解决方案1】:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多