我正在尝试将图像加载到舞台上。我使用以下代码:
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
答案 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);
这可能不起作用 - 因为加载器不再在范围内,它可能会被删除。我相信它会坚持到足以让这行代码成功,但现在没有任何测试方法。如果你尝试它并且它失败了,我们就会选择大卫的答案,我会删除我的。