입출력 오류

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() 핸들러에서 구현할 수 있습니다.