Actionscript:找不到加载程序

时间:2013-03-20 18:09:11

标签: actionscript-3 actionscript flash-cs4

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

    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

2 个答案:

答案 0 :(得分:0)

this page on Function scope。函数内定义的变量仅在其中可用,因此您只需在函数外部定义它们:

private var iLoader:Loader;

public function loadImg():void{

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

}

答案 1 :(得分:0)

从您的代码判断,看起来iLoader是一个作用于函数loadImg的变量。您无法在loadImg之外使用该名称访问它。

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

但是,你应该能够以更优雅的方式绕过它。 AS3中的每个事件都有一个目标属性。在这种情况下,目标应该是您的加载器。因此,在onLoaderReady内,您应该能够执行以下操作:

 this.stage.addChild(e.target);

这可能不起作用 - 因为加载器不再在范围内,它可能会被删除。我相信它会坚持到足以让这行代码成功,但现在没有任何测试方法。如果你尝试它并且它失败了,我们就会选择大卫的答案,我会删除我的。