1

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

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

提前致谢

4

2 回答 2

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;
于 2011-05-18T17:14:27.937 回答
1

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

button1.addEventListener(MouseEvent.MOUSE_DOWN, removeButton);

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

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

关于另一个话题。

我总是敦促人们不要在时间线上进行互动。它只会让事情变得混乱,尤其是当您在 AS3 中拥有如此强大的面向对象工具时......

无论哪种方式 - 干杯和好运。

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

当然可以-尽管这是一个相当深的问题,具体取决于您的经验。主要是参与 AS3 的面向对象特性,并仅通过代码驱动您的大部分应用程序。

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

当我刚刚学习这一点时 - 我得到了一本好书,并在谷歌上搜索了很多,以找出 AS3 的基本要素,然后就从那里开始了。做几个简单的项目,你可以看到你能得到多深,而且速度很快。

这样工作的好处怎么强调都不为过。

如果您还有其他问题,请告诉我。祝你好运!

于 2011-05-18T16:21:43.920 回答