AS3监听另一个类监听器

时间:2013-10-30 16:39:33

标签: actionscript-3 class oop actionscript

从我的主文档类中拉出一个加载xml文件的类:

Main.as:

language = new Language();

在我的语言课程中,我使用URLLoader加载了一个xml文件,并有一个内部的' onComplete'功能。我会用什么来让我的Main课程知道这个事件已经完成?

我已经看了一下dispatchEvent()方法并且遇到了更多麻烦,可能使用它错了。非常感谢任何帮助

编辑/进一步说明:

从我看来我的Main类包含:

addEventListener("languageLoaded", functionName);

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

dispatchEvent(new Event("customEvent"));

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

2 个答案:

答案 0 :(得分:1)

在Main.as中:

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

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

在Language.as中:

dispatchEvent(new Event("languageLoaded"));

但不是

dispatchEvent(new Event("customEvent"));

答案 1 :(得分:0)

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

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以响应事件。