swfの親の有無


たまに使おうとすると忘れてるのでメモ。

自分に親がいるかどうか確認する

this.loaderInfo.addEventlistener(Event.COMPLETE, selfLoadComp);
private function selfLoadComp(e:Event):void{
if(!loaderinfo.loader){
//親がいない
}
else{
//親がいる
}
}

これを最初に仕込んでおいて、initializeメソッドを呼ぶ前に何か処理させれば使えるはず。「自分が読み込まれたら」というイベントは自分だけで実行した時もEvent.COMPLETEするようです。

プリローダを実装している場合や、後読みのswfファイルである場合に、親となるswfがいないときでも正常に動作させるために、親がいない場合の特殊処理を書く時に使えると思ってます。特に親ファイルでデータをロードして子供に渡す場合、これを使うと親なしで子供だけでパブリッシュして実験できるようになったりするので便利かなーと。(間違えると2重に読み込んだりすることになりますがw)

この場では関係ないですが、Loaderで指定したURLがない場合、IOErrorEventになるわけですが、この時の失敗したURLをIOErrorEvent自体から取得する方法というのはないんでしょうか。どうにもロード失敗すると、loaderInfoのプロパティが一部しか取得できないみたいで、urlその取得できない値の一部の様子。

単品だったらそれでOKですが、何個もロードしている時はどれがエラーだったのかわかると便利そうなんですけどね。loaderにname属性をつけたらなんとかなるのかな・・・?