문제

Flex 3의 flash.media.Sound 클래스에서 이상한 동작이 나타납니다.

var sound:Sound = new Sound();
try{
sound.load(new URLRequest("directory/file.mp3"))
} catch(e:IOError){
 ...
}

그러나 이것은 도움이 되지 않습니다.스트림 오류가 발생하는데 실제로는 Sound 생성자에 있는 것으로 보입니다.

오류 #2044:처리되지 않은 IOErrorEvent:.텍스트=오류 #2032:스트림 오류.에...]

Flex 문서에서 IOErrorEvent에 대한 이벤트 리스너를 추가하는 예제를 봤습니다. 물론 이 작업을 수행할 필요는 없으며 단순히 try-catch를 사용하면 될까요?null 이벤트 리스너를 설정할 수 있나요?

도움이 되었습니까?

해결책

IO오류 = 대상 파일을 찾을 수 없습니다(또는 다른 이유로 읽을 수 없습니다).파일 경로를 확인하세요.

편집하다:방금 이것이 귀하의 문제가 아닐 수도 있다는 것을 깨달았습니다. 단지 IO 오류를 잡으려고 하는 것입니까?그렇다면 다음과 같이 할 수 있습니다.

var sound:Sound = new Sound();
sound.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
sound.load(new URLRequest("directory/file.mp3"));

function ioErrorHandler(event:IOErrorEvent):void {
    trace("IO error occurred");
}

다른 팁

URLRequest는 즉각적이지 않으므로 리스너를 추가해야 합니다.그것은 될 것이다 매우 디스크에서 로드하는 경우 빠르지만 여전히 이벤트 리스너가 필요합니다.이를 설정하는 방법(IOErrorEvent 처리 완료)에 대한 좋은 예가 있습니다. 라이브독.

try...catch는 해당 함수가 호출될 때 발생하는 오류에만 적용됩니다.네트워크, 디스크 등에서 항목을 로드하는 것과 관련된 모든 종류의 메서드는 비동기식입니다. 즉, 호출할 때 바로 실행되지 않지만 대신 호출한 직후 언젠가 발생합니다.이 경우 오류나 이벤트를 포착하거나 로드가 완료된 시기를 확인하려면 addEventListener가 필요합니다.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top