【问题标题】:AS3 listening for another classes listenerAS3 监听另一个类监听器
【发布时间】:2013-11-10 09:52:10
【问题描述】:

从我的主文档类中,我提取了一个加载 xml 文件的类:

Main.as:

language = new Language();

在我的语言类中,我使用 URLLoader 加载一个 xml 文件,并具有一个内部“onComplete”函数。我会用什么来让我的 Main 类知道这个事件已经完成?

我查看了 dispatchEvent() 方法,只是遇到了更多麻烦,可能是用错了。非常感谢任何帮助

编辑/进一步说明:

从我的 Main 类将包含的内容看来:

addEventListener("languageLoaded", functionName);

我坚持我的班级需要什么。当我使用时:

dispatchEvent(new Event("customEvent"));

我有一个未定义的错误。我已经读到我需要将 EventDispatcher 扩展为我的类,但这对我来说似乎不合适,并且会有不同的方法来做到这一点。

【问题讨论】:

  • 你的 Language 类是继承 EventDispatcher 还是继承自 EventDispatcher 的类?

标签: actionscript-3 class oop actionscript


【解决方案1】:

在 Main.as 中:

language = new Language();
language.addEventListener("languageLoaded", functionName);

语言需要“扩展 EventDispatcher”作为主要“扩展 Sprite”。

在 Language.as 中:

dispatchEvent(new Event("languageLoaded"));

但不是

dispatchEvent(new Event("customEvent"));

【讨论】:

  • 延长课程成功了,我想我只是被抛弃了为什么我需要这样做。这有助于谢谢你
【解决方案2】:

更多代码可能有助于向我们阐明问题可能是什么。然而,这听起来或多或少是一个解决方案:

Language.as:

public class Language
{
    private var m_uldr:URLLoader = new URLLoader();

    private function someFunction():void
    {
        m_uldr.addEventListener(Event.COMPLETE, myListener);
    }

    private function myListener(pEvent:Event):void
    {
    }

    public function addLoaderCompleteListener(pListener:Function):void
    {
        m_uldr.addEventListener(Event.COMPLETE, pListener);
    }
}

Main.as:

public class Main extends Sprite
{
    private var m_lang:Language = new Language();

    private function someFunction():void
    {
        m_lang.addLoaderCompleteListener(onLoaderComplete);
    }

    private function onLoaderComplete(pEvent:Event):void
    {
    }
}

如果您在 URLLoader 触发事件之前调用 Language.someFunction 和 Main.someFunction,则 Language.myListener 和 Main.onLoaderComplete 都将被调用以响应事件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    • 2012-11-30
    • 1970-01-01
    相关资源
    最近更新 更多