SWFがWebサーバー上にあり、無効なURLを読み込もうとしているときにload
の方法がURLStream
クラスのEvent.OPEN
の代わりにIOErrorEvent.IO_ERROR
の代わりに送信されるのはなぜですか?IOErrorEvent.IO_ERRORの代わりにEvent.OPENをディスパッチする理由
SWFをローカルで実行しているときは、同じことは適用されません。
サンプルコード:
var CLS_UrlStream:URLStream = new URLStream(); // Initialize URLStream class instance.
CLS_UrlStream.addEventListener(Event.OPEN, FUN_StreamHandler); // Listen for successful connections.
CLS_UrlStream.addEventListener(IOErrorEvent.IO_ERROR, FUN_StreamHandler); // Listen for conenction errors.
CLS_UrlStream.load(new URLRequest("InvalidURL")); // Load file.
private function FUN_StreamHandler(FUN_PAR_Event:Event):void {
trace("EVENT TYPE: " + FUN_PAR_Event.type);
}
// Outputs: EVENT TYPE: open
代わりにHTTP_STATUSを保持していますが、Event.OPENに関しては、実行されたSWFがWebサーバーからアクセスされたときに常に起動されますが、ローカルで実行された場合は起動されません。私はなぜそれが理解したいと思います。同じように聴いても、なぜイベントが違うのですか? – IneedHelp
わかりました。SWFがサーバー上で実行されていて、存在しないリソースを要求しているとき、サーバーは実際にデータとしてカウントするエラーメッセージを送信します。したがって、エラーイベントはありません。存在しないファイルの要求が行われたときにエラーで応答するWebサーバーがなかったため、同じものはローカルには適用されませんでした。 Monster Debuggerでライブをトレースすることでこれを発見しました。 – IneedHelp
基本的には、ストリーミングと通常のローディングの違い。 –