【发布时间】:2010-02-06 10:58:44
【问题描述】:
我目前正在开发一个项目,该项目将加载一个 swc,对其进行检查并允许用户查看其中的类。
我使用 Loader.loadBytes 加载 library.swf(字节来自我使用的解压缩库)。我使用 getDefinitionByName 创建了该类的一个实例。
只要在下一帧调用 getDefinitionByName,这一切都可以正常工作。如果我立即调用它,我会收到一个参考错误。为了解决这个问题,我想出了一个相当老套的解决方案:
private function processLibraries( event : Event ) : void
{
_zipFiles.forEach( processSwfs );
DisplayObject( FlexGlobals.topLevelApplication ).addEventListener( Event.ENTER_FRAME, enterFrame );
}
private function enterFrame( event : Event ) : void
{
DisplayObject( FlexGlobals.topLevelApplication ).removeEventListener( Event.ENTER_FRAME, enterFrame );
_classCollection = new ArrayCollection();
_zipFiles.forEach( processCatalogs );
complete( _classCollection );
}
我真的不喜欢在顶级应用程序上使用输入帧事件。我也不想设置计时器。这也太恶心了。
Loader.loadBytes 不会触发一个完整的事件,所以我不知道我在哪里监听事件,以了解字节已完全加载到 ApplicationDomain 中的时间。
一定有更简洁的方法解决这个问题?
谢谢
【问题讨论】:
标签: apache-flex