【问题标题】:Waiting while SWFLoader loads a swf file等待 SWFLoader 加载 swf 文件
【发布时间】:2009-03-18 16:44:58
【问题描述】:

目前我正在开发一个大量使用外部 SWF 的应用程序 (Flex)。 我想创建一个静态方法,它将文件名作为参数并返回包装在其他类中的 SWF。

public static function getSWFWrapperFromFile(path:string):SWFWrapper {
   var loader:SWFLoader = new SWFLoader();
   loader.addListener(Event.COMPLETE, onLoad);
   loader.load(path);
   // If I create new SWFWrapper object here and try to assign it the loader.content  I get null reference

  }

但是,由于非阻塞 load() 和 onLoad 处理程序的需要,使用这种方法我无法将逻辑封装在一个函数中。调用加载方法后是否有可能强制延迟?或者也许还有其他更好的方法?

谢谢, 阿朗佐

【问题讨论】:

    标签: apache-flex flash swfloader


    【解决方案1】:

    显示列表专为异步加载而设计。您会注意到 Loader 是一个 DisplayObject 派生类,因此可以直接放在显示列表中。当它的内容被加载时,它将成为 Loader 的子节点。因此,如果 SWFWrapper 是 DisplayObject 派生的,您只需在代码末尾执行以下操作:

    
    var wrapper:SWFWrapper = new SWFWrapper();
    wrapper.addChild(loader);
    return wrapper;
    

    【讨论】:

      【解决方案2】:

      您需要等到您的Loader 对象完成。尝试添加事件处理程序。是的,当你有多个装载机并且必须等到最后一个装载机完成后,整个事情变得模糊不清。但是,如果您要使用 SWFLoader,就是这样。

      【讨论】:

        【解决方案3】:

        在 Flash 中,您不能阻塞方法 - 您始终必须使用 onLoad 处理程序来加载数据。 (as3 执行模型是单线程的,如果你阻塞在一个方法中,程序的其余部分将不会被执行)

        【讨论】:

          【解决方案4】:

          就像其他人说的那样,你不能那样做。但是,看看BulkLoader AS3 库,它可以让您轻松管理多个加载器并等待它们完成。它有据可查,只需几行即可使用。

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2012-02-23
            • 2013-09-22
            • 2010-12-27
            • 1970-01-01
            • 2023-03-21
            相关资源
            最近更新 更多