要获取仍在加载的Sound对象的最终长度,可以使用以下方法:
Sound.getLength()
方法: 在Flash Player中,可以使用Sound.getLength()
方法获取已加载音频文件的长度。这个方法返回一个浮点数,表示音频文件的长度(以秒为单位)。
示例代码:
var sound:Sound = new Sound();
sound.load(new URLRequest("path/to/sound.mp3"));
sound.addEventListener(Event.COMPLETE, onSoundLoaded);
function onSoundLoaded(event:Event):void {
var duration:Number = sound.getLength();
trace("音频长度:" + duration + "秒");
}
ID3
标签: 如果音频文件包含ID3
标签,可以使用Sound.id3
属性获取音频文件的元数据,包括长度信息。
示例代码:
var sound:Sound = new Sound();
sound.load(new URLRequest("path/to/sound.mp3"));
sound.addEventListener(Event.COMPLETE, onSoundLoaded);
function onSoundLoaded(event:Event):void {
var id3:ID3Info = sound.id3;
var duration:Number = id3.length;
trace("音频长度:" + duration + "秒");
}
NetStream
类: 如果音频文件是通过NetStream
类播放的,可以使用NetStream.time
属性获取当前播放的音频长度。
示例代码:
var sound:Sound = new Sound();
var context:SoundLoaderContext = new SoundLoaderContext(8000, true);
sound.load(new URLRequest("path/to/sound.mp3"), context);
sound.addEventListener(Event.COMPLETE, onSoundLoaded);
function onSoundLoaded(event:Event):void {
var netStream:NetStream = new NetStream(new NetConnection());
netStream.play(null, null, new SoundTransform());
netStream.client = this;
netStream.appendBytesAction(NetStreamAppendBytesAction.RESET_BEGIN);
netStream.appendBytes(sound.data);
netStream.appendBytesAction(NetStreamAppendBytesAction.END_SEQUENCE);
netStream.addEventListener(NetStatusEvent.NET_STATUS, onNetStatus);
function onNetStatus(event:NetStatusEvent):void {
if (event.info.code == "NetStream.Play.Complete") {
var duration:Number = netStream.time;
trace("音频长度:" + duration + "秒");
}
}
}
需要注意的是,以上方法可能会受到音频文件格式、编码和网络状况等因素的影响,因此可能会存在一定的误差。如果需要更精确的音频长度,可以使用音频编辑软件进行处理。
领取专属 10元无门槛券
手把手带您无忧上云