单击Flash中的另一个按钮后如何隐藏按钮?

时间:2011-05-18 16:08:24

标签: flash actionscript-3 button cs4

我正在使用动作脚本3来制作点击游戏。在第1帧上有两个按钮,按钮1和2.在第3帧上有两个按钮,按钮A和B.

我想要它,以便在我单击第1帧上的按钮1后,第3帧上的按钮A将被隐藏,或者当我单击第1帧上的按钮2时,第3帧上的按钮B将被隐藏。单击时隐藏的按钮不会执行任何操作。

提前致谢

2 个答案:

答案 0 :(得分:3)

如果您尝试删除不在显示列表中的内容,则Flash会抛出错误。我想这里最好的解决方案是设置一个时间轴变量来跟踪你按下了哪个按钮。像这样:

第1帧

var b1:Boolean = false;
var b2:Boolean = false;

button1.addEventListener(MouseEvent.MOUSE_DOWN, checkButton);
button2.addEventListener(MouseEvent.MOUSE_DOWN, checkButton);

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

   gotoAndPlay(3);
}

第3帧

myButtomA.visible = false;
myButtomB.visible = false;   

if (b1) myButtomA.visible = true;
if (b2) myButtomB.visible = true;

答案 1 :(得分:1)

有很多方法可以从显示列表中删除对象,或者将其从视图中隐藏。例如:

button1.addEventListener(MouseEvent.MOUSE_DOWN, removeButton);

function removeButton(e:MouseEvent):void
{
 buttonContainer.removeChild(otherButton);
}

您还可以将目标按钮“visibility”属性设置为false。 非常简单,您应该可以根据需要修改此代码段。

另一个话题。

我总是敦促人们不要在时间轴上发展互动。它只会让事情变得混乱,特别是当你在AS3中有这种强大的面向对象工具时......

无论哪种方式 - 干杯,祝你好运。

  • 更新 - 回应OP的最后评论:

当然 - 尽管这是一个相当深刻的问题,取决于您的经验。最重要的是参与AS3的面向对象功能,并通过代码单独驱动大部分应用程序。

项目看起来像这样:Fla主要用作资产的容器(如果你利用嵌入,甚至不是那个),只有一个空的时间轴框架。然后,主文档类负责启动和构建项目的所有方面 - 从加载和控制数据到创建和添加显示列表对象,以及建立和控制用户交互。经典包/类设计用于创建数十个或数百个单独的.AS文件。时间轴仍然用于创建复杂的动画,但很少涉及任何代码(保存stop();此处或那里)。

当我刚刚学习这个时 - 我得到了一个good book,并且经常点击谷歌,找出AS3的基本要素,并且从那里开始。制作一些简单的项目,您可以快速了解您可以获得的深度。

这样的工作带来的好处不容小觑。

如果您有任何其他问题,请与我们联系。祝你好运!