【问题标题】:Can subClasses listen to superClass dispatched events?子类可以监听超类调度的事件吗?
【发布时间】:2014-03-31 14:09:11
【问题描述】:

on我在听 Flex4 (actionscript3) 中的事件时遇到了一些问题。

在下面的代码中,在方法 1 类 A 中分派的事件在方法 2 类 C 中未检测到。我尝试对分派的事件使用 bubbles=true,但它没有改变任何内容。

你有什么建议吗?

Class A extends EventDispatcher{
    public function method1():void{
        dispatch(new Event("onEvent"));
    }
}

Class B extends A{
    ....
}

Class C extends B{
    public function method2():void{
        addEventListener("onEvent", onEventResult);

        method1();

        function onEventResult(event:Event):void{
            ...
        }
    }
}

Class D{
    function mainMethod():void{
        var c:C = new C();
        c.methode2();
    }
}

【问题讨论】:

  • 它应该可以工作,只需修复编译错误,例如监听器名称
  • 没有编译错误。当我使用 Flash Builder 在调试模式下运行应用程序时,我到达了调度事件的语句,然后什么也没有发生,因为我认为事件没有被捕获。
  • 它适用于我(您的代码)并且默认情况下应该可以工作,添加 trace 以确保,可能是调试器的一些问题

标签: actionscript-3 apache-flex event-handling flex4


【解决方案1】:

我认为在 C 类中说:addEventListener("onEvent", onEventResult);

是不够的

您的 A 类活动唯一可以“冒泡”的地方就是舞台。因此,您必须使用您的 'addEventListener' 方法定位 stage

试试stage.addEventListener("onEvent", onEventResult);

当然,从您的代码来看,没有证据表明这些类中的任何一个的实例实际上是舞台上的。我假设你只是没有表现出来。

【讨论】:

  • 没有一个班级在舞台上。所以我想它不会起作用。
  • 它们中的任何一个都被实例化了吗?您必须实际使用该类才能使其功能正常工作!
猜你喜欢
  • 2011-03-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-21
  • 2015-08-02
  • 1970-01-01
  • 2013-11-06
相关资源
最近更新 更多