Invoer-/uitvoerfouten

Gebeurtenishandlers en foutberichten voor invoer-/uitvoerfouten bieden.

Op een mobiel apparaat is het netwerk mogelijk minder betrouwbaar dan op een bureaubladcomputer met een snelle internetverbinding. Toegang tot externe inhoud op mobiele apparaten heeft twee beperkingen: beschikbaarheid en snelheid. Daarom moet u ervoor zorgen dat de elementen lichtgewichtelementen zijn en moet u handlers toevoegen voor elke IO_ERROR-gebeurtenis om feedback naar de gebruiker te sturen.

Stelt u zich bijvoorbeeld eens een gebruiker voor die via een mobiele telefoon op uw website bladert en plots de netwerkverbinding verliest tussen twee metrostations. Op het moment dat de verbinding wegviel werd een dynamisch element geladen. Op het bureaublad kunt u een lege gebeurtenislistener gebruiken om te voorkomen dat een fout bij uitvoering wordt weergegeven, omdat dit scenario bijna nooit zou voorkomen. Op een mobiel apparaat moet u echter de situatie met meer dan slechts een lege listener afhandelen.

De volgende code komt niet overeen met een invoer-/uitvoerfout. Gebruik deze niet zoals weergegeven:

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; 
}

Het is beter een dergelijke fout af te handelen en een foutbericht voor de gebruiker weer te geven. De volgende code handelt dit probleem correct af:

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 
}

Denk eraan dat u de gebruiker steeds een manier aanbiedt om de inhoud opnieuw te laden. Dit gedrag kan worden geïmplementeerd in de onIOError() -handler.