输入/输出错误

针对 IO 错误提供事件处理函数和错误消息。

与连接到高速 Internet 的台式机的网络相比,移动设备上的网络可靠性比较低。在移动设备上访问外部内容有两个限制:可用性和速度。因此,请确保使用轻型资源,并为每个 IO_ERROR 事件添加处理函数以便向用户提供反馈。

例如,假设一个用户正在使用移动设备浏览您的网站,突然在两个地铁站之间失去了网络连接。失去连接时正在加载一个动态资源。在台式机上,您可以使用空事件侦听器阻止显示运行时错误,因为这种情况几乎从不会发生。然而,在移动设备上,您必须处理这种情况,而不仅仅是使用简单的空侦听器。

以下代码不响应 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() 处理函数中实现。