Actionscript 3 单击后将按钮设置为不可见
我试图在AS3中将一个按钮设置为不可见,但是当我离开框架并返回框架时,按钮再次可见。这是我为通信技术课制作的一款危险游戏 以下是我目前拥有的:Actionscript 3 单击后将按钮设置为不可见,actionscript-3,flash,Actionscript 3,Flash,我试图在AS3中将一个按钮设置为不可见,但是当我离开框架并返回框架时,按钮再次可见。这是我为通信技术课制作的一款危险游戏 以下是我目前拥有的: a1.addEventListener(MouseEvent.CLICK, a1mouseClick); function a1mouseClick(mouse:MouseEvent) { a1.visible = false; gotoAndStop("A1"); trace("Going to A1"); } 但是,当使
a1.addEventListener(MouseEvent.CLICK, a1mouseClick);
function a1mouseClick(mouse:MouseEvent) {
a1.visible = false;
gotoAndStop("A1");
trace("Going to A1");
}
但是,当使用a1按钮返回到帧时,它再次可见
这是我当前的动画:在时间线中移动时,flash player可以重新创建精灵、电影剪辑和文本字段,这样按钮就会再次显示出来。要防止重新创建,请将所有控件移动到不带关键帧的单独标高。如果需要关键帧,请尝试在所有关键帧中为该按钮设置相同的实例名称。在时间轴中移动时,flash player可以重新创建精灵、电影剪辑和文本字段,使按钮再次可见。要防止重新创建,请将所有控件移动到不带关键帧的单独标高。如果需要关键帧,请尝试在所有关键帧中为此按钮设置相同的实例名称。您缺少flash时间线和关键帧功能的一个基本方面。离开该帧后,该帧内容的舞台实例及其属性/状态将消失。返回到该帧时,将根据关键帧内容再次创建实例 我认为考虑到您当前的方法,最好的解决方案是将主板持久化到所有帧中。您可以通过为其创建一个层,并使其关键帧从第2帧延伸到第27帧来实现这一点。但是,您的下一个问题将是调整屏幕上所有元素的可见性,如果您不希望这些元素可见 我的建议是将该屏幕的所有元素放入它自己的movieclip符号中,并将该movieclip及其侦听器的所有代码添加到您创建的新层中。例如,您可以将该实例命名为-main_-board,因此可以使用
main_-board.visible
属性修改其可见性。如果确实选择了该解决方案,则需要修改该框架上的所有代码以使用该实例名称,即:
main_board.a1.visible = false;
此外,还需要修改所有addEventListener行:
main_board.a1.addEventListener(MouseEvent.CLICK, a1mouseClick);
你对这个游戏的处理方法可以大大简化,但比我已经讨论的问题范围还要远 您缺少flash时间线和关键帧功能的一个基本方面。离开该帧后,该帧内容的舞台实例及其属性/状态将消失。返回到该帧时,将根据关键帧内容再次创建实例 我认为考虑到您当前的方法,最好的解决方案是将主板持久化到所有帧中。您可以通过为其创建一个层,并使其关键帧从第2帧延伸到第27帧来实现这一点。但是,您的下一个问题将是调整屏幕上所有元素的可见性,如果您不希望这些元素可见 我的建议是将该屏幕的所有元素放入它自己的movieclip符号中,并将该movieclip及其侦听器的所有代码添加到您创建的新层中。例如,您可以将该实例命名为-main_-board,因此可以使用
main_-board.visible
属性修改其可见性。如果确实选择了该解决方案,则需要修改该框架上的所有代码以使用该实例名称,即:
main_board.a1.visible = false;
此外,还需要修改所有addEventListener行:
main_board.a1.addEventListener(MouseEvent.CLICK, a1mouseClick);
你对这个游戏的处理方法可以大大简化,但比我已经讨论的问题范围还要远 @fsbmain和@prototypic他们是对的
在时间线中移动时,flash player可以重新创建精灵、电影剪辑和文本字段,因此按钮将再次显示。要防止重新创建,请将所有控件移动到不带关键帧的单独标高。如果需要关键帧,请尝试在所有关键帧中为此按钮设置相同的实例名称 我正在查看您的项目,并提供了一个快速修复方案,您需要执行以下操作:
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");
}
你可以在这里下载编辑过的文件@fsbmain和@prototypic他们是对的
在时间线中移动时,flash player可以重新创建精灵、电影剪辑和文本字段,因此按钮将再次显示。要防止重新创建,请将所有控件移动到不带关键帧的单独标高。如果需要关键帧,请尝试在所有关键帧中为此按钮设置相同的实例名称 我正在查看您的项目,并提供了一个快速修复方案,您需要执行以下操作:
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");
}
您可以在此处下载编辑后的文件非常感谢。这是我第一次使用flash,所以我对它不在行。这是一个巨大的帮助:)非常感谢。这是我第一次使用flash,所以我对它不在行。这是一个巨大的帮助:)