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

有帮助吗?

解决方案

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