您必须以特定方式链接您的方法,您可以通过以下方式轻松地做到这一点(此代码未经测试):
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml"
preinitialize="onPreInitialize();"
creationComplete="onCreationComplete()">
<mx:Script>
<![CDATA[
private function onPreInitialize():void {
addEventListener( "RemoteResourceLoaded", remoteResourceLoaded );
loadARemoteResource();
}
private function loadRemoteResource():void {
// ...
}
private var _created:Boolean = false;
private function onCreationComplete():void {
// whatever you have here move it to the runTheApp() method...
_created = true;
runTheApp();
}
private var _resourcesReady:Boolean = false;
private function remoteResourceLoaded(event:Event):void {
// process your resources...
_resourcesReady = true;
runTheApp();
}
// this method will be called once the app is created
// and once when your resources are loaded
//
// 1:
// if app is created before resources are loaded its body
// is not going to be executed as _resourcesReady flag is false
// when resources are loaded it will then be called again
// and the body will be executed
//
// 2:
// if the resources are loaded before the app is created
// (during debugging?) it's gonna be called once but the
// _created flag is still false so the body is not processed
// when creationComplete fires both _created is set to true
// and method is called again, both conditions are true
// and the body gets executed
private function runTheApp():void {
if ( _resourcesReady && _created ) {
// now the app is fully created and resources are loaded
}
}
]]>
</mx:Script>
</mx:Application>
这显示了一般的想法,但我认为它回答了你的问题。如果在creationComplete 触发之前加载资源,则如果需要很长时间才能正确加载和处理creationComplete,则通常是等待资源的问题。
希望这可以帮助。