入出力エラー

IO エラーに関するイベントハンドラーおよびエラーメッセージを用意してください。

モバイルデバイスは、高速インターネットに接続されているデスクトップコンピューターと比較して、ネットワークの信頼性に劣ります。モバイルデバイスで外部コンテンツへアクセスする場合、利用可能性と速度という 2 つの制約が伴います。したがって、アセットを軽量化し、すべての IO_ERROR イベントにハンドラーを追加して、ユーザーにフィードバックを提供するようにしてください。

例えば、モバイルデバイスで Web サイトを閲覧しているユーザーのネットワーク接続が、地下鉄の駅と駅の間で突然切断されたとします。接続が切断されたときに、動的アセットをロード中でした。デスクトップでは、このシナリオはほとんど発生しないので、空のイベントリスナーを使用して、ランタイムエラーが表示されないようにします。一方、モバイルデバイスでは、単純な空のリスナーよりも複雑な方法で、この状況に対応する必要があります。

次のコードでは、IO エラーに応答しません。このコードをそのまま使用しないでください。

var loader:Loader = new Loader(); 
loader.contentLoaderInfo.addEventListener( Event.COMPLETE, onComplete ); 
addChild( loader ); 
loader.load( new URLRequest ("asset.swf" ) ); 
  
function onComplete( e:Event ):void 
{ 
    var loader:Loader = e.currentTarget.loader; 
    loader.x = ( stage.stageWidth - e.currentTarget.width ) >> 1; 
    loader.y = ( stage.stageHeight - e.currentTarget.height ) >> 1; 
}

より適切に対応するには、このようなエラーを処理して、ユーザーにエラーメッセージを表示します。次のコードでは、エラーを適切に処理しています。

var loader:Loader = new Loader(); 
loader.contentLoaderInfo.addEventListener ( Event.COMPLETE, onComplete ); 
loader.contentLoaderInfo.addEventListener ( IOErrorEvent.IO_ERROR, onIOError ); 
addChild ( loader ); 
loader.load ( new URLRequest ("asset.swf" ) ); 
 
function onComplete ( e:Event ):void 
{ 
      var loader:Loader = e.currentTarget.loader; 
      loader.x = ( stage.stageWidth - e.currentTarget.width ) >> 1; 
      loader.y = ( stage.stageHeight - e.currentTarget.height ) >> 1; 
} 
 
function onIOError ( e:IOErrorEvent ):void 
{ 
      // Show a message explaining the situation and try to reload the asset. 
      // If it fails again, ask the user to retry when the connection will be restored 
}

ベストプラクティスは、ユーザーにコンテンツを再ロードする方法を提供することです。この動作は、 onIOError() ハンドラーで実装できます。