1

我正在开发一款游戏,大部分进展顺利。但是,它通常在某个帧上有一个按钮,可以让它转到某个帧并播放。在我的研究中,我发现了以下解决方案

  1. 可以隐藏第 1 帧上的按钮并运行代码(需要知道如何执行此操作)。
  2. 只在有问题的框架上添加按钮的侦听器(我不明白这个,他们的意思是:在时间轴内而不是在包内编码)

来源:stackoverflow 解决的问题

我还发现了这个 stackoverflow 问题链接 2 这个链接显示了一些关于隐藏按钮的信息,但是我认为它并不适用于包内。但我改变了,见下文。

根据上面链接中的示例,我的代码片段

    package 
    {

import flash.display.MovieClip;
import flash.events.Event;

import flash.events.MouseEvent;

    public class DocumentClass extends MovieClip
{
    public var b1:Boolean = false;
    public var b2:Boolean = false;        

    public function DocumentClass()
    {
        init();


    }
    private function init():void
    {


    button1.addEventListener(MouseEvent.MOUSE_DOWN, checkButton);

    button2.addEventListener(MouseEvent.MOUSE_DOWN, checkButton);

    private function checkButton(e:MouseEvent):void
    {
       if(e.target.name == button1) b1 = true;
       else b2 = true;

       gotoAndPlay(3);
    }

例如,在第 3 帧上,我可能会执行与上述链接相同的操作:

    buttonA.visible = false;
    buttonB.visible = false;   

    if (b1) buttonA.visible = true;
    if (b2) buttonB.visible = true;

编辑:我尝试了上面的代码并且它有效,但我的问题还没有解决(见下文)。

所以这是我的问题:我需要有关如何更好地使用上述代码的建议/信息。原因是;我认为上面的代码不适合我想要的(见下文)。

上面的代码不适用于(我认为)放置在第 1 帧以外的帧上的按钮,这是一个问题。

我需要有一些没有(可见)按钮的帧作为介绍,然后在第 5 帧上,例如一个带有按钮的菜单,该按钮可以转到下一帧并停止 [stop();] 和在第 6 帧上播放的按钮下一帧直到结束。

4

1 回答 1

0

您可以做的是在开始时添加所有按钮(第 1 帧)。然后,使用一个变量来跟踪当前帧(currentFrame)。从这里,您可以创建一个 switch 语句来根据需要隐藏和显示按钮。每次更改帧时,我都会创建一个“hideAllButtons”函数来调用。所以像:

if(currentFrame!=prevFrame){

    hideAllButtons();
    prevFrame=currentFrame;

    switch(currentFrame){
    case 1:
    hideAllButtons();
    break;
    case 2:
    btn1.visible=true;
    btn2.visible=true;
    break;
    }
}

使用变量来跟踪前一帧。如果它与当前(新)框架不同,请隐藏所有按钮,然后运行 ​​switch 语句,根据框架添加您需要的任何按钮(通过将可见设置为 true)。

hideAllButtons 函数可以循环遍历按钮并将所有可见性设置为 false。

于 2013-06-12T15:33:19.947 回答