跳转框架上的按钮在Actionscript 3.0中不再起作用

时间:2017-08-28 09:46:56

标签: android actionscript-3 flash

这就像它应该做的那样:

  1. 主屏幕上有一个开始按钮和一个恢复按钮。
  2. 随着帧的进展,有一个“保存进度和返回主页”按钮,它将保存当前帧并返回主屏幕。
  3. 返回主屏幕,当您点击“恢复”时,它会将您带回来 到你上一帧。
  4. 而......等等。
  5. 我做了1-3次。但当它返回到您所在的上一帧时,按钮似乎不再起作用了。就像,你不能再进步并向前移动框架了。

    这是一个截图: screenshot

    然后,以下是上述两个动作脚本的代码:

    第1帧:

    stop();
    
    start_btn.addEventListener(MouseEvent.CLICK, gotoIntro);
    
    function gotoIntro(event:MouseEvent):void
    {
        gotoAndStop('intro');
    }
    
    resume_btn.addEventListener(MouseEvent.CLICK, gotoLastFrame);
    
    function gotoLastFrame(event:MouseEvent):void
    {
        gotoAndStop(lastFrame);
        trace(currentFrame);
    }
    

    第2帧:

    var lastFrame:int = currentFrame;
    
    next_btn.addEventListener(MouseEvent.CLICK, gotoNext);
    
    function gotoNext(event:MouseEvent):void
    {
        nextFrame();
        lastFrame++;
        trace("current frame: " + currentFrame + "; saved frame: " + lastFrame);
    
    }
    
    back_btn.addEventListener(MouseEvent.CLICK, gotoHome);
    
    function gotoHome(event:MouseEvent):void
    {
        gotoAndStop('home');
        trace(lastFrame);
    }
    

    这是我将来想做的未来简单的视觉小说。但是大声笑我已经被困在这里了哈哈哈。有人可以帮助如何再次向前移动框架吗?非常感谢你!

1 个答案:

答案 0 :(得分:1)

问题是你的框架。框架总是难以管理。当您转到第2帧时,会在“下一步”按钮中添加一个事件侦听器。然后,当您转到第3帧然后离开第1帧时,您的按钮将从舞台上移除。然后当你返回到第3帧时,一个新的“下一个”按钮被添加到舞台上,但没有事件监听器(因为你跳过第2帧添加了它)。

一个简单的解决方案是将您的小说框架与代码一起移动到自己的动画片段,并将其命名为“myNovel”作为实例名称。将您的开始屏幕移动到另一个动画片段并将其命名为“myStartScreen”。他们两个都在第1帧的舞台上,但你的小说是看不见的。实际上,您的主时间轴上只需要一个框架

然后当您点击开始或下一步时,您将使开始屏幕不可见,并且您的小说可见。你甚至不需要记住框架,因为它会留在你剩下的框架中。

主要时间轴代码:

// make novel invisible at the beginning
myNovel.visible = false;

function gotoHome():void
{
    // the novel will stay in the current frame
    myStartScreen.visible = true;
    myNovel.visible = false;
}

// startFromTheBeginning is an optional parameter
function gotoNovel(startFromTheBeginning:Boolean = false):void
{
    // the novel will stay in the current frame
    myStartScreen.visible = false;
    myNovel.visible = true;

    if(startFromTheBeginning)
    {
        myNovel.gotoAndStop(1);
    }
}

开始屏幕代码:

start_btn.addEventListener(MouseEvent.CLICK, gotoIntro);

function gotoIntro(event:MouseEvent):void
{
    // parent is the parent moveiclip (your main timeline with the code above)
    parent.gotoNovel(true); // start from the beginning
}

resume_btn.addEventListener(MouseEvent.CLICK, gotoLastFrame);

function gotoLastFrame(event:MouseEvent):void
{
    parent.gotoNovel(); // this will make the novel visible that are in the frame that the user left
}

新代码

next_btn.addEventListener(MouseEvent.CLICK, gotoNext);

function gotoNext(event:MouseEvent):void
{
    nextFrame();
}

back_btn.addEventListener(MouseEvent.CLICK, gotoHome);

function gotoHome(event:MouseEvent):void
{
    parent.gotoHome();
}