`

【转】关于Event.ADDED_TO_STAGE

UP 
阅读更多
今天遇到了Event.ADDED_TO_STAGE这个事件,因为第一次遇到所以找了好多的资料,想了解在什么情况下使用这个事件。原来是当我们要引用 stage 的时候需要添加这样的侦听器。

看代码:

private function _onAddedToStage(param1:Event)
        {
            removeEventListener(Event.ADDED_TO_STAGE, _onAddedToStage);
            if (m_mcStage == null)
            {
                m_mcStage = stage;
                m_mcStage.stageFocusRect = false;
                m_mcStage.focus = this;
                m_mcStage.addEventListener(KeyboardEvent.KEY_DOWN, _onKeyDown);
                m_mcStage.addEventListener(KeyboardEvent.KEY_UP, _onKeyUp);
            }// end if
            addEventListener(Event.ENTER_FRAME, _onEnterFrame);
            return;
        }
            private function _init()
        {
          
            addEventListener(Event.ADDED_TO_STAGE, _onAddedToStage);/////////////////
          
        }                                                                                                                                           }

很多时候,可视类初始化的时候,要用到stage属性,则必须使用Event.ADDED_TO_STAGE事件,有的时候,连文档类初始化时,也需要用到Event.ADDED_TO_STAGE,原因是这个swf将被其它的文件加载,如果直接在初始化函数内使用stage属性,单独发布是没问题的,但联调时就会发生问题。


但是,文档类初始化函数内的Event.ADDED_TO_STAGE,当这个swf被其他文件加载时,很有可能被触发两次,如果你将所有真正的初始化代码都写在Event.ADDED_TO_STAGE事件相应函数内,所有的可视化元素,将会被new出来两份,所有的侦听,将会有两份...


这个现象很隐蔽,往往发生了也不报错,从表面上也看不出问题,但一旦发生,轻则降低机器性能,重则会发生很多灵异事件,例如明明把某个元素visible设成false了,但屏幕上还是能看到它,原因就是new出来东西,都将有两份。
Event.ADDED_TO_STAGE被广播两次的原因,可能是文档类的特殊性造成的,它自己初始化的时候被触发一次,被加载并显示的时候再触发一次。
分享到:
评论

相关推荐

    Flex面试.pdfFlex面试.pdf

    this.removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); drawCircle(100, 100, 50, 0xFF0000); } public function drawCircle(x:uint, y:uint, radius:uint, color:uint):void { var circle:Sprite...

    javascript_to_flash_as3.0.rar

    在AS3.0中,可以通过`Event.ADDED_TO_STAGE`或`Event.COMPLETE`事件来监听加载状态。 5. **优化技巧**:为了提高性能,应该避免频繁的JavaScript与Flash通信。可以考虑批量处理数据,或者使用缓存机制减少不必要的...

    egret切换场景渐黑动画

    5. **事件监听**:在场景切换前后,我们需要监听`egret.Event.ADDED_TO_STAGE`和`egret.Event.REMOVED_FROM_STAGE`事件,以便在正确的时间点启动和结束渐黑动画。 6. **代码示例**: ```typescript let ...

    Flash Develop安装与配置

    else addEventListener(Event.ADDED_TO_STAGE, init); } private function init(e:Event = null):void { removeEventListener(Event.ADDED_TO_STAGE, init); trace("Hello, World!"); } } } ``` 当你运行...

    ActionScript3.0语言和组件参考API chm

    而`flash.events.Event`类则定义了所有事件的基础结构,包括常见的如`Event.ENTER_FRAME`,`Event.ADDED_TO_STAGE`等,开发者可以通过监听这些事件来控制程序的流程。 CHM(Compiled Help Manual)是一种由...

    网页嵌入flash,解除阻止,自动播放

    this.addEventListener(Event.ADDED_TO_STAGE, function(event:Event) { this.play(); }); ``` 这会在Flash对象加载到舞台时自动播放。 对于浏览器的阻止策略,有时需要用户手动点击才能播放Flash。这时,你可以...

    一个简单的as3例子

    stage.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); } private function onAddedToStage(event:Event):void { // 在这里执行添加到舞台后的操作 } } } ``` 2. **组件(Components)**:Flex...

    ActionScript.3.0.Cookbook.Oct.2006.chm

    stage.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); function onAddedToStage(event:Event):void { trace("Stage is added to the display list."); } ``` - **作用:** 响应用户的交互行为,如...

    用as3写的加载进度条

    在AS3中,我们可能在`EnterFrame`事件或`Event.ADDED_TO_STAGE`事件的监听器中执行初始化代码。对于进度条,这可能包括设置其初始位置和大小,以及绑定加载事件的监听器。 6. **代码示例** 创建进度条的简单步骤...

    Flex程序如何获取html容器传递的URL参数值

    this.addEventListener(Event.ADDED_TO_STAGE, handleAddToStage); } private function handleAddToStage(event:Event):void { ExternalInterface.addCallback("parseUrlParams", parseUrlParams); } ...

    flex快速上手(中文)

    this.addEventListener(Event.ADDED_TO_STAGE, init); } private function init(event:Event):void { var label:Label = new Label(); label.text = "Hello, World!"; this.addChild(label); } } ``` 这段...

    Adobe Flash Builder 4.5 Android Air 程序开发系列 之四 打开与关闭应用程序是的保存数据

    如果应用启动时间过长,建议添加一个简单的加载指示器图片,通过监听ADDED_TO_STATE事件并在加载完成后加载主应用。要实现全屏显示,可以在应用程序配置中设置`<fullScreen>true</fullScreen>`。 在Android中,应用...

    LCTF软件备份VariSpec™ Liquid Crystal Tunable Filters

    g) The VsGui program was modified to add sweep function, and the associated files were added to the file manifest. The new functions are assigned higher ordinal numbers than the earlier commands, so ...

    BURNINTEST--硬件检测工具

    - Added additional USB 2.0 Loopback plug test initialization to ensure plugs are in a 'clean' state when starting the USB tests. This was added due to reported USB data verification errors after ...

    UMAP Journal 38.2 2017 ICM Contest

    It's a chance to challenge your brain, solve a real world math problem, and get recognition for it on an international stage. It's an excellent opportunity to develop your interpersonal skills ...

    深入FLEX组件生命周期

    this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); } } ``` ##### 2. Configuration(配置) **定义**:配置阶段用于完成组件的详细配置,包括设置组件的属性、事件回调函数、样式以及效果定义等。...

    helloworld:你好,世界

    this.addEventListener(egret.Event.ADDED_TO_STAGE, this.onAddToStage, this); } private onAddToStage(event: egret.Event) { // 清除舞台背景颜色 this.stage.backgroundColor = 0xffffff; // 创建并添加...

    AS3 横向-竖向 滚动条 带源码

    - 添加事件监听器,如ADDED_TO_STAGE事件,用于在组件被添加到舞台时初始化滚动条。 4. **响应式设计**: - 滚动条应具有响应式设计,能根据内容的大小和窗口的尺寸自动调整自身。 - 可以通过添加Resize事件监听...

Global site tag (gtag.js) - Google Analytics