我正在尝试将一个按钮设置为在AS3中不可见但是当我离开框架并返回到该按钮时,按钮再次可见。这是我为通信技术课制作的危险游戏。
以下是我目前的情况:
a1.addEventListener(MouseEvent.CLICK, a1mouseClick);
function a1mouseClick(mouse:MouseEvent) {
a1.visible = false;
gotoAndStop("A1");
trace("Going to A1");
}
然而当它回到带有a1按钮的框架时,它再次可见。
答案 0 :(得分:4)
在时间轴中移动时,Flash播放器可以重新创建精灵,影片剪辑和文本字段,因此您的按钮会再次显示。为了防止娱乐,将所有控件移动到没有关键帧的单独级别。如果需要关键帧,请尝试在所有关键帧中为此按钮设置相同的实例名称。
答案 1 :(得分:1)
您缺少Flash时间轴和关键帧功能的基本方面。一旦你离开那个框架,该框架内容的阶段实例及其属性/状态就会消失。当您返回到该帧时,将根据关键帧内容再次创建实例。
我认为,根据您当前的方法,最佳解决方案是将主板在所有帧中保持不变。你可以通过为它创建一个图层,让它的关键帧从第2帧扩展到第27帧。但是,当你不希望它们可见时,你的下一个问题是调整该屏幕上所有元素的可见性。
我的建议是将该屏幕的所有元素放入其自己的movieclip符号中,并将该movieclip及其所有代码添加到您创建的新图层中。例如,您可以将该实例命名为main_board,因此您可以使用main_board.visible
属性修改它的可见性。如果您确实选择了该解决方案,则需要修改该帧上的所有代码以使用该实例名称,即:
main_board.a1.visible = false;
此外,您还需要修改所有addEventListener行:
main_board.a1.addEventListener(MouseEvent.CLICK, a1mouseClick);
你对这个游戏的方法可以大大简化,但是甚至超出了我已经消失的范围!
答案 2 :(得分:1)
@fsbmain和@prototypical他们是对的。
在时间轴中移动时,Flash播放器可以重新创建精灵,影片剪辑和文本字段,因此您的按钮会再次显示。为了防止娱乐,将所有控件移动到没有关键帧的单独级别。如果需要关键帧,请尝试在所有关键帧中为此按钮设置相同的实例名称。
我正在查看您的项目,并提供快速修复,您需要执行以下操作:
在顶部创建一个新图层,通过以下操作管理所有框架的一些可用操作:
import flash.display.DisplayObject;
// Manages the buttons visible state
var buttonsStates:Object = {
"a1":true, "b1":true, "c1":true, "d1":true, "e1":true,
"a2":true, "b2":true, "c2":true, "d2":true, "e2":true,
"a3":true, "b3":true, "c3":true, "d3":true, "e3":true,
"a4":true, "b4":true, "c4":true, "d4":true, "e4":true,
"a5":true, "b5":true, "c5":true, "d5":true, "e5":true
};
// Checks the buttons visibility
function checkVisibility () {
for (var buttonName:String in buttonsStates)
{
var child:DisplayObject = this.getChildByName(buttonName);
child.visible = buttonsStates[buttonName];
}
}
// Saves the visible satatus to false
function setVisibilityToFalse(target:*) {
buttonsStates[target.name] = false;
target.visible = false;
}
每次要检查按钮的可见性时,都必须调用checkVisibility()
功能。例如,每次返回按钮列表时。
最后,每个按钮的事件处理程序必须如下:
function a1mouseClick(mouse:MouseEvent) {
setVisibilityToFalse(mouse.currentTarget); // Saves the visible state to false
gotoAndStop("A1");
trace("Going to A1");
}
您可以在此处下载已编辑的文件http://cl.ly/Lt6X