我正在创造一款游戏,而且大多数游戏都很顺利。然而,它通常在某个帧上有一个按钮,它应该使它进入某个帧并播放。 在我的研究中,我发现了以下解决方案
来源:a stackoverflow solved question
我还发现了这个stackoverflow问题link 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上有一个按钮它会播放下一帧直到结束。
答案 0 :(得分: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语句,根据帧添加所需的任何按钮(通过将visible设置为true)。
hideAllButtons函数可以循环遍历按钮并将所有可见性设置为false。