Как обрабатывать ошибки загрузки с классом Flex Sound - PullRequest
3 голосов
/ 17 сентября 2008

Я вижу странное поведение с классом flash.media.Sound в Flex 3.

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

Однако это не помогает. Я получаю сообщение об ошибке потока, и он действительно находится в конструкторе Sound.

Ошибка № 2044: необработанное событие IOErrorEvent :. текст = Ошибка № 2032: Ошибка потока. в ...]

Я видел один пример в документах Flex, где они добавляют прослушиватель событий для IOErrorEvent. Конечно, мне не нужно это делать, и я могу просто использовать try-catch? Могу ли я установить нулевой прослушиватель событий?

Ответы [ 3 ]

5 голосов
/ 17 сентября 2008

IOError = целевой файл не может быть найден (или по какой-либо другой причине не может быть прочитан). Проверьте путь к файлу.

Редактировать: Я только что понял, что это не может быть вашей проблемой, вы просто пытаетесь поймать ошибку ввода-вывода? Если это так, вы можете сделать это:

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");
}
1 голос
/ 17 сентября 2008

try ... catch применяется только к ошибкам, возникающим при вызове этой функции. Любой метод, который включает в себя загрузку содержимого из сети, с диска и т. Д., Будет асинхронным, то есть он не будет выполняться правильно, когда вы его вызываете, но вместо этого это происходит через некоторое время после его вызова. В этом случае вам действительно необходим addEventListener для того, чтобы перехватывать любые ошибки или события или знать, когда он закончил загрузку.

1 голос
/ 17 сентября 2008

Вам нужно будет добавить прослушиватель, поскольку URLRequest не является мгновенным. Это будет очень быстро, если вы загружаете с диска, но вам все равно понадобится прослушиватель событий. Есть хороший пример того, как это настроить (в комплекте с обработкой IOErrorEvent) в aliveocs .

...