针对 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()
处理函数中实现。