Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Flash AS3-如果我更改标签,舞台上的按钮将不会隐藏-错误或遗漏什么?_Flash_Button_Components_Cs3 - Fatal编程技术网

Flash AS3-如果我更改标签,舞台上的按钮将不会隐藏-错误或遗漏什么?

Flash AS3-如果我更改标签,舞台上的按钮将不会隐藏-错误或遗漏什么?,flash,button,components,cs3,Flash,Button,Components,Cs3,好吧——每次都会出现奇怪的问题——所以我想我一定是错过了一些非常明显的东西 如果在Flash CS3中,我将一个按钮组件拖到后台,并且在文档类中,我用visible=false隐藏该按钮;-它很好用。 但是,如果我将该按钮的标签从默认的“标签”更改为其他任何内容,则该按钮不会不可见 例如,名为hide_btn的按钮,文档类Foo: package { import flash.display.MovieClip; public class Foo extends Movi

好吧——每次都会出现奇怪的问题——所以我想我一定是错过了一些非常明显的东西

如果在Flash CS3中,我将一个按钮组件拖到后台,并且在文档类中,我用visible=false隐藏该按钮;-它很好用。 但是,如果我将该按钮的标签从默认的“标签”更改为其他任何内容,则该按钮不会不可见

例如,名为hide_btn的按钮,文档类Foo:

package { import flash.display.MovieClip; public class Foo extends MovieClip{ public function Foo(){ hide_btn.visible = false; // Works ONLY if I didn't change the button label!! } } } 包{ 导入flash.display.MovieClip; 公共类Foo扩展MovieClip{ 公共功能Foo(){ hide_btn.visible=false;//仅当我没有更改按钮标签时才起作用!! } } } 当我运行电影时,按钮(正确)不可见。。。 如果我将标签更改为,比如说“LabelX”,那么按钮仍然存在

所以,如果这是一个bug,肯定会有人注意到这一点,对吧?? 那么,有人能解释一下发生了什么吗

干杯

注:一点痕迹(隐藏可见)表示错误,尽管它显然不是…。

时髦的一个

没想到:)

我也有类似的问题…不完全是。我试图访问movieclip的后一帧中的一些剪辑,就像在as2中一样,但是除非playhead转到该帧,否则在as3中,剪辑是空的

解决方法是强制stage在RENDER事件中失效并访问对象(我认为这发生在stage上渲染所有内容之前,但在所有内容都准备好/可访问之后)

我的猜测是,因为您在参数选项卡中设置了标签,该标签在文档类构造函数之后进行计算,所以按钮组件失效中可能有某种信息告诉它是可见的。这样做之后,将其设置为不可见会更安全

这是最新的代码……著名的遗言:“它适合我”:


好的,我不相信这个解决方案已经发布了,尽管我认为建议的解决方案非常酷,对于测试目的非常有用。我试图使阶段无效,但问题仍然存在于一个新的flash文件中,除了给定的代码外,什么都没有。。。一旦我更改标签,我就无法隐藏按钮。在更改标签之前,它会起作用

我认为最好的解决方案可能是创建一个按钮对象,或者以某种方式导出按钮供actionscript使用,然后设置位置、可见性和标签属性。我今晚要试试这个,会让你知道它是如何工作的。我有一个巨大的项目,这个问题正在拖延…

以下是解决方案:

对于您遇到此问题的任何此类按钮,请右键单击它,转换为符号并选择“电影剪辑”(当然,除非您希望它是其他内容)。 将名称从Symbol1更改为更具描述性的名称(以前的名称适用于我)。 在该对话框的链接部分,选择“导出Actionscript”和“导出到第一帧”(如果对您有效-第一帧通常是我的首选)。。。。点击OK


再次右键单击该按钮,然后选择“编辑”,然后从“属性”按钮更改标签。将大小更改为所需比例(H和W),然后单击场景(即场景1)以退出编辑模式。测试和享受,它现在工作可靠。这比编写代码从电影剪辑创建按钮更容易。

如果等待隐藏按钮组件直到初始加载之后。visible=false将起作用。 例如,在构造函数中设置myBtnComponent.visible=false将不起作用,而是将其添加到构造函数中

你的构造函数的公共函数 { loaderInfo.addEventListener(Event.COMPLETE,init); }

然后

私有函数init(e:事件):void { loaderInfo.removeEventListener(Event.COMPLETE,init); myBtnComponent.visible=false }

我相信组件将在应用程序首次启动时从组件检查器加载其初始设置,因此通过侦听initial loaderInfo complete事件,您可以在组件实例化后更改其属性


-戴夫-

为乔治干杯-是的,这对我来说很有用!奇怪的是,如此普通的事情实际上需要解决!但我认为你是对的——在我让它看不见之后,按钮里面的东西让它看得见。我猜除了你的解决方案之外,一个简单的解决方法就是使用脚本来更改标签,或者将所有内容粘贴到movieclip/sprite中,使其不可见。没问题。关于这种奇怪的行为,你是对的。我经常使用ui组件,但到目前为止还没有遇到过这个。如果您对答案满意,可以将其标记为解决方案;)昨晚我加了一条评论,今天就不见了!无论如何,这种行为仍然存在,即使使用上面给出的解决方案。我使用了准确的代码,如果您更改按钮的标签,按钮仍将保持可见。我一直在为同一个问题而斗争。
   package {   
    import flash.display.MovieClip;
    import flash.events.Event;
    public class Foo extends MovieClip{
        public function Foo(){
            //stage.invalidate() forces the stage to re-evaluate itself
            stage.invalidate();
            stage.addEventListener(Event.RENDER, stageRenderHandler);
        }
        //the RENDER events gets fired when invalidation is done
        //and everything is ready to be displayed/rendered
        private function stageRenderHandler(event:Event):void{
            hide_btn.visible = false; // Works
        }
    }   
}