加载声音在Sound.id3上给出了异常

时间:2010-02-15 15:44:13

标签: flex exception audio

将MP3加载到flash.media.Sound对象时,id3属性会出错:

SecurityError: Error #2000: No active security context.

Offcourse,就像Flex中的许多错误一样,Flex文档没有提到这个问题,除了它存在...

MP3有效(我已经使用MediaPlayer和iTunes检查过),Sound对象处于良好状态(bytesTotalbytesLoaded都反映了正确的字节数。)

有人也遇到过这个问题吗?任何解决方案或建议?

1 个答案:

答案 0 :(得分:3)

你的MP3应该没问题。

如果您想要访问有关mp3文件的更多数据,而不仅仅是播放,则需要一个允许它的策略文件。与加载图像类似,如果您只是将其添加到显示器并且不访问像素,那一切都很好,但是如果您想要访问像素,您应该拥有权限(跨域xml)。

对于图像,当您调用加载图像时,可以传递一个LoaderContext,您明确表示要检查crossdomain.xml文件并获取对内容的访问权。

同样,您应该创建SoundLoaderContext,并将 second 参数设置为true(以进行检查),并在声音加载调用中使用该参数。

e.g。

var snd:Sound = new Sound();
            var req:URLRequest = new URLRequest("yourSound.mp3");
            var context:SoundLoaderContext = new SoundLoaderContext(0, true);

            snd.load(req, context);
            snd.play();   

对于ID3数据,您应该监听ID3事件:

sound.addEventListener(Event.ID3, onID3);

function onID3(event:Event) {
    for(var i in sound.id3)
        trace('prop: ' + i + ' value: '  + sound.id3[i]);
}

有关详细信息,您可能会发现mp3infoutil library方便。

HTH, 乔治