2

好的 - 每次都会发生奇怪的问题 - 所以我想我一定是错过了一些非常明显的东西。

如果在 Flash CS3 中我将一个 Button 组件拖到舞台上,并且在 Document Class 中我用 visible = false 隐藏该按钮;- 它工作正常。但是,如果我将该按钮的标签从默认的“标签”更改为其他任何内容,则该按钮不会变得不可见......

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

包裹 {   
    导入 flash.display.MovieClip;

    公共类 Foo 扩展了 MovieClip{
        公共函数 Foo(){
            hide_btn.visible = false; // 仅当我没有更改按钮标签时才有效!
        }
    }   
}

当我运行电影时,按钮(正确)不可见......如果我将标签更改为“LabelX” - 那么按钮仍然存在......

所以如果它是一个错误,肯定有人会注意到这一点,对吧?那么 - 有人可以解释发生了什么吗?

干杯。

PS。trace(hide_btn.visible) 的痕迹说是假的,即使它显然不是......

4

4 回答 4

2

时髦的一个!

没想到:)

我有一个类似的问题......不完全是。我试图在影片剪辑的后一帧中访问一些剪辑,就像在 as2 中一样,但除非播放头转到该帧,否则在 as3 中,剪辑为空。

解决方法是强制舞台无效并访问 RENDER 事件中的对象(我认为这发生在所有东西都被渲染到舞台上之前,但是在你所有的东西都准备好/可以访问之后)

我的猜测是,由于您在“参数”选项卡中设置了标签,该标签在 Document 类构造函数之后进行评估,因此按钮组件失效中可能有一些东西告诉它可见。完成所有操作后将其设置为不可见会更安全。

这是更新的代码...著名的遗言:'它对我有用':)

   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
        }
    }   
}
于 2009-08-15T11:13:55.067 回答
1

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

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

然后

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

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

-戴夫-

于 2010-02-18T15:46:57.570 回答
0

好的,我不相信该解决方案已发布,尽管我认为建议的解决方案非常酷且可用于测试目的。我尝试使舞台无效,但问题仍然存在,新的闪存文件除了给出的代码外什么都没有……一旦我更改标签,我就无法隐藏按钮。在更改标签之前,它可以工作。

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

于 2009-09-25T17:51:47.163 回答
0

这是解决方案:

对于您遇到此问题的任何此类按钮,右键单击它,转换为符号并选择电影剪辑(除非您希望它是其他东西,当然)。将名称从 Symbol1 更改为更具描述性的名称(previous_btn 为我工作)。在此对话框的“链接”部分,选择“为 Actionscript 导出”和“导出到第一帧”(如果这对您有用 - 第一帧通常是我的偏好)...。单击“确定”。

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

于 2009-09-26T17:08:50.240 回答