- ベストアンサー
ロードに失敗したら代替イメージをロードさせたい
- 読み込みが終わっていないローダーの情報は表示できません。ロードに失敗した場合、代替イメージを表示する方法について教えてください。
- myLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,function(e)の処理で「読み込みが終わっていないローダーの情報は表示できません」というエラーが発生します。このエラーを回避して代替イメージをロードさせる方法はありますか?
- ロードに失敗した場合、例外を発生させずに代替イメージをロードする方法を教えてください。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
書かれていらっしゃるスクリプトですが, Flash Player 10 用 SWF のパブリッシュ設定だとまったくそのままでOKで無事動作します。 Flash Player 9 用 SWF のパブリッシュ設定だと, > Error: Error #2099: 読み込み中のオブジェクトは、 > 十分に読み込まれていないので、その情報を表示 > することができません。 > at flash.display::LoaderInfo/get loader() > at MethodInfo-1() と出ますね。 また次のようにすると,Flash Player 9 用 SWF のパブリッシュ設定でもOKです。 myLoader.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,function(e){ e.target.removeEventListener(e.type,arguments.callee); myLoader.close(); myLoader.load(new URLRequest("dummy.jpg")); }) 結局 「e.target.loader」 の部分で詰まります。 Flash Player が e.target.loader を開示してくれませんね。 こんな逃げ方↓はどうでしょうか? -------------------------------- function setOnError(LD:Loader):void { LD.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,function(e){ LD.removeEventListener(e.type,arguments.callee); LD.close(); LD.load(new URLRequest("dummy.jpg")); }) } setOnError(myLoader); -------------------------------- 上記逃げ方の使用例↓ --------------------------------- var myLoader1:Loader = new Loader(); var myLoader2:Loader = new Loader(); function setOnError(LD:Loader):void { LD.contentLoaderInfo.addEventListener(IOErrorEvent.IO_ERROR,function(e){ LD.removeEventListener(e.type,arguments.callee); LD.close(); LD.load(new URLRequest("dummy.jpg")); }) } setOnError(myLoader1); setOnError(myLoader2); myLoader1.load(new URLRequest("genuine1.jpg")); myLoader2.load(new URLRequest("genuine2.jpg")); addChild(myLoader1); myLoader1.x = 50; addChild(myLoader2); myLoader2.x = 100; ---------------------------------
お礼
ありがとうございます 10では動くのですね‥‥ ちょうどクラス内に引数入れて リスナー生成するための関数が用意してあるので そいつにこいつのリスナーを 作らせるようにしようと思います