我目前正在开发一个项目,这个项目将加载一个SWC,检查它,并允许用户查看里面的类。
我使用loader.load bytes加载library.swf(字节来自我使用的unzip库)。我使用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中。
一定有更整洁的方法来解决这个问题?
谢谢