Errores de entrada y salida

Proporcione controladores de eventos y mensajes de error para los errores de E/S.

En un dispositivo móvil, la red puede ser menos fiable que un equipo de escritorio conectado a Internet de alta velocidad. El acceso a contenido externo en los dispositivos móviles cuenta con dos limitaciones: disponibilidad y velocidad. Por lo tanto, asegúrese de que los recursos sean ligeros y añada controladores para todos los eventos IO_ERROR para proporcionar información al usuario.

Por ejemplo, imagine que un usuario está navegando en su sitio web en un dispositivo móvil y de repente se pierde la conexión de la red entre dos estaciones de metro. Se estaba cargando un dispositivo dinámico cuando la conexión se perdió. En el escritorio, se puede utilizar un detector de eventos vacío para evitar que aparezca un error en tiempo de ejecución, ya que es muy poco probable que suceda este escenario. Sin embargo, en un dispositivo móvil se necesita algo más que un simple detector de eventos.

El siguiente código no responde a un error de E/S. No lo utilice cuando se muestre:

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

Es mejor administrar un error de este tipo y proporcionar un mensaje de error para el usuario. El siguiente código lleva a cabo una gestión adecuada:

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 
}

Como práctica recomendada, recuerde ofrecer al usuario una forma de cargar de nuevo el contenido. Este comportamiento se puede implementar en el controlador onIOError() .