扩展装载机

时间:2012-04-24 15:13:04

标签: actionscript-3 extending-classes

我正在尝试扩展Loader类。

我想在其上存储一个变量。

示例:

package
{
import flash.display.Loader;

public class MyLoader extends Loader
{
    private var _typeOfGallery:String

    public function MyLoader()
    {
        super()
    }

    public function set typeOfGallery(value:String):void
    {
        _typeOfGallery = value
    }

    public function get typeOfGallery():String
    {
        return _typeOfGallery
    }
}

}

然后我这样使用:

var loader:MyLoader = new MyLoader()
loader.typeOfGallery = 'games'
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded)

function loaded(e:Event):void{
trace(e.target.typeOfGallery)
}

我收到此错误:

ReferenceError:错误#1069:在flash.display.LoaderInfo中找不到属性typeOfGallery并且没有模式值。

(我已从葡萄牙语翻译成英文错误信息)

我如何扩展Loader以便我不会收到此错误?

感谢。

2 个答案:

答案 0 :(得分:2)

Loader不会发送Event.COMPLETE事件。你应该听

loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loaded)

然后使用

获取MyLoader
function loaded(e:Event):void{
   trace(((e.currentTarget as LoaderInfo).loader as MyLoader).typeOfGallery);
}

在您的代码中,e.targetLoaderInfo,因为COMPLETE事件会向Loader本身冒泡。

答案 1 :(得分:0)

loader.contentLoaderInfo.typeOfGallery = 'games'

错误 - 你想要加载器而不是它的contentLoaderInfo ...

loader.typeOfGallery = 'games'
跟踪(e.target.typeOfGallery)应该工作,因为它引用了加载器!!