首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >as3 -从父swf到子swf的dispatchEvent

as3 -从父swf到子swf的dispatchEvent
EN

Stack Overflow用户
提问于 2009-09-07 04:34:45
回答 4查看 14.2K关注 0票数 4

我有一个主要的“父”swf加载其他几个swf。如果在主swf中发生了什么,我需要告诉其中一个子swf。

从另一个角度看,这似乎也很有效。任何子类都可以简单地使用dispatchEvent(),我可以设置主swf来监听事件。但是,我无法使子swf捕获父swf发送的任何事件。它是如何做到的?

EN

回答 4

Stack Overflow用户

发布于 2009-11-12 22:43:06

在父swf (Index.swf)中加载子swf (Main.swf)时,请在字段变量或类变量中保留引用

代码语言:javascript
复制
fldMain = BulkLoader.getLoader("Index").getContent("Main.swf") as DisplayObject;
this.addChild(fldMain);

(我正在使用加载任何内容)

最好等到添加子事件(ADDED_TO_STAGE事件)时再调度事件

当我想给我的孩子分派一个事件时,我只需说:

代码语言:javascript
复制
fldMain.dispatchEvent(new CustomEvent(CustomEvent.INIT_CHILD,data));
票数 1
EN

Stack Overflow用户

发布于 2009-09-26 18:58:21

我会倾听每个孩子的心声

代码语言:javascript
复制
Event.ADDED_TO_STAGE

一旦将其添加到舞台上,您就可以引用/侦听舞台上的事件。

示例

代码语言:javascript
复制
//Child
if(stage) _init(); //Already added
else addEventListener(Event.ADDED_TO_STAGE, _init); //waiting to be added

private function _init(e:Event = null):void
{
    stage.addEventListener(CustomEvent.CHANGED, _onStageChanged);
{

我没有对此进行测试,但只要您将事件从舞台上分派出去,它就应该可以工作。

代码语言:javascript
复制
//stage
dispatchEvent(new CustomEvent(CustomEvent.CHANGED));

如果你正确地设置了你的自定义事件类,你也可以传递信息。

票数 0
EN

Stack Overflow用户

发布于 2009-12-24 02:22:21

我所做的是在将子元素添加到舞台后,在父元素上添加一个监听程序以进行更改。现在,只要你想让子进程处理自我更新,只需从父进程发送Event.CHANGE即可。冒泡可以是真的,也可以是假的。

我认为,如果您将孩子的侦听器附加到舞台(stage.addEventListener...),任何抛出Event.CHANGE的对象都可以触发孩子处理事件。

代码语言:javascript
复制
package
{
    import flash.display.*
    import flash.events.*

        public class Child extends Sprite
        {

            public function Child():void
            {
                this.addEventListener(Event.ADDED_TO_STAGE, addedToStageHandler, false, 0, true);
            }

            private function addedToStageHandler(pEvent:Event):void
            {
                trace("CHILDADDED");
                this.removeEventListener(Event.ADDED_TO_STAGE, addedToStageHandler);
                this.parent.addEventListener(Event.CHANGE, parent_changeEventHandler, false, 0, true);
            }

            private function parent_changeEventHandler(pEvent:Event):void
            {
                trace("PARENT_CHANGED");
            }
        }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1387568

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档