[AS]progression4 PreloadSWF()を実行するタイミングで「Error: 対象の CastPreloader は準備が完了していないか、すでにコンテンツが読み込まれています。」エラーに注意
タイトルどおりの現象。
※PreloadSWF()については↓の記事がとてもわかりやすいです。
jp.ikekou.blog.Main:Progression 4.0.1 Public Beta 1.3 追加機能① PreloadSWFクラス
で、これを観ながら上記ブログとは少し変えながら試してみたのですが、タイトルのエラー発生。
変更した箇所はatCastLoadStart()の部分で、以下のソース
override protected function atCastLoadStart():void { var loaderList:LoaderList = new LoaderList({ onProgress:function():void{ trace(this.percent) } }); loaderList.addCommand( //new PreloadSWF()が遅い new LoadSound(new URLRequest("sound/sample.mp3")) ,new PreloadSWF() ); loaderList.execute(); }
結論から言うと、new PreloadSWF()の書く順番が重要。
↓このように書けばOK
override protected function atCastLoadStart():void { var loaderList:LoaderList = new LoaderList({ onProgress:function():void{ trace(this.percent) } }); loaderList.addCommand( //PreloadSWF()が早い new PreloadSWF() ,new LoadSound(new URLRequest("sound/sample.mp3")) ); loaderList.execute(); }
ちなみに参考にしたブログでは、loaderListの処理をatCastLoadStart()のaddCommand()内で行い、そこに追加している。
その際には、new PreloadSWF()の順番は影響はしないようす。
override protected function atCastLoadStart():void { addCommand( function(){ var loaderList:LoaderList = new LoaderList({ onProgress:function():void{ trace(this.percent) } }); loaderList.addCommand( //new PreloadSWF()の位置は先でもエラーはでない ,new PreloadSWF() new LoadSound(new URLRequest("sound/sample.mp3")) ); this.parent.addCommand(loaderList); } ); }
command周りの処理の順番がイマイチちゃんと理解していないから、泥臭く検証しないとわからないのよね。。。
ガッツリ理解しとかないとな。。。
Tweet