动作脚本:未找到加载程序

Posted

技术标签:

【中文标题】动作脚本:未找到加载程序【英文标题】:Actionscript: loader not found 【发布时间】:2013-03-10 00:22:15 【问题描述】:

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

    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

【问题讨论】:

【参考方案1】:

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

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

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

 this.stage.addChild(e.target);

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

【讨论】:

【参考方案2】:

见this page on Function scope。函数内部定义的变量只在函数内部可用,所以你只需要在函数外部定义它们:

private var iLoader:Loader;

public function loadImg():void

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


【讨论】:

现在我收到另一个错误:“TypeError: Error #1009: Cannot access a property or method of a null object reference. // at gallery/onLoaderReady()” 找不到阶段 我相信这一点方法?为了在我的类中使用阶段,我在我的类中添加了以下代码:function gallery() this.addEventListener(Event.ADDED_TO_STAGE, onAddedToStage); private function onAddedToStage(e:Event):void this.removeEventListener(Event.ADDED_TO_STAGE, onAddedToStage); sayStage(); public function sayStage():void trace(stage); 其中 gallery 是构造函数。 你说得对,这表明找不到stage。也许您的loadImg() 函数在gallery 添加到舞台之前被调用? 不是总是先调用构造函数(图库)吗? 是的,但是事件是异步的。如果您执行var gallery:Gallery = new Gallery(); gallery.loadImg(); addChild(gallery) 之类的操作,则可能会产生此错误。你确定要先把gallery加到舞台上吗?如果您将创建gallery 的代码添加到您的问题中,我们也可以检查。 我认为这是一个不同的问题(因为调用阶段是我想的问题?)。整个课程可以在这里找到:***.com/questions/15537410/…

以上是关于动作脚本:未找到加载程序的主要内容,如果未能解决你的问题,请参考以下文章

未加载 Spring Boot 测试 H2 sql 脚本

“可能未定义的访问”动作脚本

对西门脚本分析延时加载动作

如何在 FlashBuilder 中使用外部动作脚本类(我以为我知道)

动态脚本标签加载未按预期工作

Laravel 5 样式表和脚本未为非基本路由加载