var sound:Sound;
var url:URLRequest=new URLRequest("http://XXXXXXXXXXXXXX");
sound = new Sound();
var context:SoundLoaderContext=new SoundLoaderContext(0,false);
sound.addEventListener(Event.ID3, id3Handler);
sound.load(url,context);
var channel:SoundChannel = sound.play();
playB.addEventListener(MouseEvent.CLICK, fl_ClickToPlayStopSound_2);
var fl_ToPlay_2:Boolean = false;
function id3Handler(event:Event):void
{
var id3:ID3Info = sound.id3;
trace(id3.songName);
}
function fl_ClickToPlayStopSound_2(evt:MouseEvent):void
{
if(fl_ToPlay_2)
{
sound = new Sound();
sound.addEventListener(Event.ID3, id3Handler);
sound.load(url,context);
channel = sound.play();
trace(sound.id3.songName);
trace(sound.id3.artist);
}
else
{
channel.stop();
sound.close();
}
fl_ToPlay_2 = !fl_ToPlay_2;
}
我正在为我的在线广播(音频流)开发播放器。 “playB”是我的播放/停止按钮,它按预期工作。我的问题是id3标签...你可以看到我正在做一个歌曲名称和艺术家的痕迹,但他们都返回null。 (我已经将歌曲名id3添加到文件中)
提前致谢
答案 0 :(得分:0)
您需要等待sound
对象加载才能访问其数据。 load()
方法是异步的,这意味着您需要添加一个事件监听器来了解负载何时完成:
public function Sound_id3Example()
{
snd.addEventListener(Event.ID3, id3Handler);
snd.load(new URLRequest("mySound.mp3"));
}
private function id3Handler(event:Event):void
{
var id3:ID3Info = snd.id3;
trace(id3.songName);
}
中执行此操作的示例