【问题标题】:Flash AS3 - Dispatching Events from Parent Class to Child ClassFlash AS3 - 将事件从父类分派到子类
【发布时间】:2010-05-01 05:40:59
【问题描述】:

我认为这是一个非常简单的问题,但我似乎无法解决。基本上我有一个父类A和一个子类B。A类用addChild实例化B类。有一个共享对象正在从 java 服务器 (red5) 更新,该服务器在 A 类中附加了一个事件侦听器。我在 A 类中有一个函数,它将将此共享对象的某些特定更新传递给 B 类。出现的问题是,当实例化 B 类时,来自 A 类的事件侦听器不再起作用。我没有从 A 中删除事件侦听器。有什么想法吗?

【问题讨论】:

  • 你的意思是如果你不 addChild(b) 那么事件监听器工作?或者你的意思是如果你不做 var b:B = new B() 那么事件监听器工作?
  • 只要我执行 addChild(B)(当我执行 var b:B = new B() 时它仍然有效),A 中的事件侦听器停止工作。基本上我正在创建一个“大厅”(a 类)和“房间”(b 类)。我希望房间使用大厅的某些数据。但是,当我添加child(someRoom) 时,大厅的事件监听器不再调用更新房间的函数(即使共享对象肯定在变化)。
  • 我的立场是正确的,一旦我执行 var b:B = new B(),A 中的事件监听器就会停止工作。
  • 它们不能相关。 A 的事件有别的东西在搅扰。简单地实例化一个对象不会神奇地移除一个事件监听器..

标签: actionscript-3 red5 shared-objects addchild


【解决方案1】:

看来您的 B 类篡改了共享对象,或者可能篡改了与 Java 服务器的连接?仅仅实例化一个类当然不应该干扰它无法访问的任何东西。

您需要仔细查看 B 有哪些依赖项。它是否进入全局状态? (从 oop 的角度来看,这是一件坏事)。它是否在其构造函数中做任何使更新停止工作的工作?它是否继承了执行上述任何操作的其他类?对此进行调查,您可能应该找到罪魁祸首。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-17
    • 1970-01-01
    • 2013-04-22
    • 2013-07-28
    相关资源
    最近更新 更多