うむるむ

うむるむ は主に flash 周りの話と美少女ゲーム系の話の二本立てで構成されています。



[ 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 :




管理人 um(うむ)@web界の底辺労働者
連絡先 umroom@gmail.com
twitter http://twitter.com/umroom