IO 오류에 대한 이벤트 핸들러 및 오류 메시지를 제공합니다.
휴대 장치에서는 고속 인터넷에 연결된 데스크톱 컴퓨터에서보다 네트워크가 불안정할 수 있습니다. 휴대 장치에서 외부 내용에 액세스하는 데는 가용성과 속도라는 두 가지 제약이 따릅니다. 따라서 에셋의 리소스 소모를 적게 하고 사용자에게 피드백을 제공하도록 모든 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()
핸들러에서 구현할 수 있습니다.