3

我在 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?我可以设置一个空事件监听器吗?

4

3 回答 3

5

IOError = 无法找到目标文件(或由于某些其他原因无法读取)。检查文件的路径。

编辑:我刚刚意识到这可能不是你的问题,你只是想捕捉 IO 错误?如果是这样,您可以这样做:

变种声音:声音=新声音();
sound.addEventListener(IOErrorEvent.IO_ERROR, ioErrorHandler);
sound.load(new URLRequest("directory/file.mp3"));

函数ioErrorHandler(事件:IOErrorEvent):无效{
    trace("发生 IO 错误");
}
于 2008-09-17T13:33:39.183 回答
1

由于 URLRequest 不是即时的,因此您需要添加一个侦听器。如果您从磁盘加载,它会非常快,但您仍然需要事件侦听器。在livedocs中有一个很好的例子来说明如何设置(完成 IOErrorEvent 处理)。

于 2008-09-17T09:27:14.953 回答
1

try...catch 仅适用于调用该函数时引发的错误。任何涉及从网络、磁盘等加载内容的方法都是异步的,也就是说,当您调用它时它不会正确执行,而是在您调用它后不久发生。在这种情况下,您确实需要 addEventListener 来捕获任何错误或事件或知道何时完成加载。

于 2008-09-17T18:23:28.940 回答