Indata- och utdatafel

Se till att det finns händelsehanterare och felmeddelanden för in-/utdatafel.

För mobilenheter kan nätverket vara mindre tillförlitligt än det för datorer som är anslutna till Internet med en hög hastighet. När det gäller åtkomst till externt innehåll på mobilenheter finns det två begränsningar; tillgänglighet och hastighet. Du ska därför se till att resurserna är enkla och att det finns hanterare för varje IO_ERROR-händelse så att du får återkoppling från användaren.

Tänk dig till exempel en användare som besöker din webbplats via en mobilenhet och plötsligt tappar nätverksanslutningen mellan två tunnelbanestationer. En dynamisk resurs har då lästs in när anslutningen bröts. För en dator kan du använda en tom händelsehanterare för att förhindra att ett körningsfel visas, eftersom detta scenario nästan aldrig inträffar. På en mobilenhet måste du emellertid hantera situationen med mer än bara en tom händelseavslyssnare.

Följande kod hanterar inte ett in-/utdatafel. Använd den inte så som den visas.

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

Ett bättre sätt är att hantera sådana fel och ge användaren ett felmeddelande. Följande kod hanterar detta korrekt:

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 
}

Ett tips är att komma ihåg att erbjuda användaren att läsa in innehållet på nytt. Detta beteende kan implementeras i hanteraren onIOError() .