0

我正在尝试将图像加载到我的舞台上。我使用以下代码:

    public function loadImg():void{

        var iLoader:Loader = new Loader();
        iLoader.contentLoaderInfo.addEventListener(ProgressEvent.PROGRESS, onProgressStatus);
        iLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaderReady);

        var fileRequest:URLRequest = new URLRequest(imgPath+'testimg.JPG');
        iLoader.load(fileRequest);

    }

    public function onProgressStatus(e:ProgressEvent) {   
        trace(e.bytesLoaded, e.bytesTotal); 
    }

    public function onLoaderReady(e:Event) {     
        this.stage.addChild(iLoader); // error is here
    }

但是似乎在 onLoaderReady 中找不到 iLoader:

1120: Access of undefined property iLoader.

如何将对象 iLoader 传递给此函数?还是我做错了什么?

提前感谢您的帮助!:D

4

2 回答 2

0

从您的代码来看,它看起来像是iLoader一个作用域为 function 的变量loadImg。您不能在 loadImg 之外通过该名称访问它。

一种解决方法是将您的 iLoader 声明放在更广泛的范围内。在这种情况下,正如 David Mear 所建议的那样,这将超出所有功能。

但是,您应该能够以更优雅的方式绕过它。AS3 中的每个事件都有一个目标属性。在这种情况下,目标应该是您的加载程序。所以在里面onLoaderReady,你应该能够做到以下几点:

 this.stage.addChild(e.target);

这有可能不起作用 - 因为加载器不再在范围内,它可能会被删除。我相信它会持续足够长的时间让这行代码成功,但现在没有任何测试方法。如果您尝试但失败了,我们将采用大卫的回答,我将删除我的。

于 2013-03-20T18:23:55.997 回答
0

请参阅有关功能范围的此页面。函数内部定义的变量只在函数内部可用,所以你只需要在函数外部定义它们:

private var iLoader:Loader;

public function loadImg():void{

    iLoader = new Loader();
    //...

}
于 2013-03-20T18:15:30.187 回答