2011-05-18 146 views
1

我正在使用actionscript 3来制作一个点并点击游戏。第1帧上有两个按钮,按钮1和2,第3帧有两个按钮,按钮A和B.如何在点击Flash中的另一个按钮后隐藏按钮?

我想它使我对以后单击第1帧按钮1,第3帧将按钮A被隐藏,或者当我点击第1帧的按钮2时,第3帧的按钮B将被隐藏。隐藏的按钮在点击时不起任何作用。

在此先感谢

回答

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

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

button1.addEventListener(MouseEvent.MOUSE_DOWN, removeButton); 

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

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

关于另一个话题。

我总是鼓励人们远离发展中国家在时间轴上的互动。它只会带来混乱,尤其是当你在AS3中如此强的面向对象的工具...

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

  • 更新 - 为应对老年退休金计划最后的评论:

没问题 - 尽管它是一个相当深的问题,根据您的经验。主要的事情是参与AS3的面向对象功能,并通过代码驱动大部分应用程序。

项目是这样的:在佛罗里达州的功能主要是作为资产的容器(如果你使用嵌入功能,即使不说),跟单,空的时间表框架。然后,主文档类负责启动和构建项目的所有方面 - 从数据的加载和控制到创建和添加显示列表对象,以建立和控制用户交互。经典软件包/类设计用于创建数十个或数百个单独的.AS文件。时间线仍然用于创建复杂的动画,但很少涉及任何代码(保存stop();这里或那里)。

当我刚刚学习这个时 - 我得到了一个good book,并击中了很多谷歌来找出AS3的基本要素,并且只是从那里去了。做一些简单的项目,你可以看到你可以很快得到的东西。

从这样的工作的好处不能被夸大了。

让我知道你是否还有其他问题。祝你好运!

+1

完全同意你的 “远离时间轴远离” 情绪。但是,考虑到他在时间线上,并且他试图隐藏不在显示列表中的其他帧的按钮,此代码不会按原样工作。他需要一些能够管理应用程序状态的东西。或者他需要将按钮重新排列在一个框架上。 – 2011-05-18 16:28:22

+0

那么这些按钮代表的物体放置在自己的背景中,或者像建筑物外的建筑物内的电视或建筑物外的汽车那样的风景。有没有一个例子可以提供,不涉及时间线的工作? – user701510 2011-05-18 18:42:00

+0

@Alex。你是完全正确的。我很少处理时间表,我完全分开了那些细节。一个很好的例子,完全证明了我的观点......大声笑。 @尼尔森的回答非常准确,操作人员需要创建另一个全局可见的变量来指示按钮是否显示。然后应该点击按钮1来设置。 – Bosworth99 2011-05-18 19:58:56

相关问题