[ AS3 ] 絶対パスの IO_ERROR でエラーが出る - 09/01/20 22:13 by um
URLLoader を使ってxml等の外部ファイルをロードする際、該当ファイルが無い場合 IO_ERROR が出る。
URLLoader.addEventListener(IOErrorEvent.IO_ERROR, HOGEHOGE) としておくと、IO_ERROR の時の処理を設定できるんだけども、ファイルパスが絶対指定(http://~)の時の挙動が気持ち悪い。
何が気持ち悪いかは以下に。
まずはOKなサンプルコード
var path:String="hoge.xml";
var urlLoader:URLLoader = new URLLoader();
urlLoader.addEventListener(Event.COMPLETE, comp);
urlLoader.addEventListener(IOErrorEvent.IO_ERROR, fail);
urlLoader.load( new URLRequest(path) );
function comp(e:Event):void{
trace("complete");
}
function fail(e:IOErrorEvent):void{
//trace("fail");
}
同階層に hoge.xml があればロード完了後に complete と出力され、ロード失敗の場合、trace がコメントアウトされてるため出力ウィンドウには何も出ない(エラー文も出ない)。
外部ファイル(ここではhoge.xml)のパスが相対パスなので問題無し。
ここで、path を「http://hoge.xml」とすると、IO_ERROR になり、fail() が実行されるけども trace は動かない。
となるはずが、URL 'http://hoge.xml' を開く処理のエラー と余計な物が出力ウィンドウに表示される。
この一文が気持ち悪い。Safari の構成ファイル一覧にもばっちりエラーが出ている。エラーだからしょうがないけども、無視して欲しいエラーだからこれもちょっと気持ち悪い。
このブログの左にあるカレンダーなんだけど、記事があるかどうかを月ごとの xml ファイルで判断していて、xml があれば記事がある日が押せるようになり、無ければ「(´・ω・`)ナイ」と表示されるようになっている。(未来についてはロードしていない。)
カレンダーがあるhtmlの階層が固定じゃないから xmlへのパスをhttp://umroom.com/~ と絶対パスで指定しているため、先に書いた様に気持ち悪い動作が起きる。
この気持ち悪いを回避するためだけに、ファイルの有無を PHP を使って調べてるのだけども、IO_ERROR があるんだから flash だけで何とかしたいもんである。PHP をはさむ分、待ち時間がちょっと長くなってしまっている。
« [ 雑記 ] ウチのHDDはSeagate、、、 | ブログトップ | [ GreenSock ] TweenMax ただいま進化中 »
トラックバックURL :