在下面的代码中,如何将进度条附加到声音并指示其进度
<mx:Script>
<![CDATA[
import flash.media.*;
import flash.net.NetStream;
[Embed(source="new1.mp3")]
[Bindable]
public var sndCls:Class;
public var snd:Sound = new sndCls() as Sound;
public var sndChannel:SoundChannel;
private var recordingState:String = "idle";
public function playSound():void {
sndChannel=snd.play();
}
public function stopSound():void {
sndChannel.stop();
}
]]>
</mx:Script>
<mx:Button label="Play" click="playSound()" />
<mx:ProgressBar x="30" y="36" mode="manual" id="audioprogress" label=""
labelPlacement="bottom" width="220" fontSize="10"
fontWeight="normal"/>
</mx:Application>
答案 0 :(得分:1)
这是我知道如何最简单的方法:
首先,在脚本部分创建两个函数:
public function get bytesLoaded():Number {
if(sndChannel == null)
return 0;
return sndChannel.position;
}
public function get bytesTotal():Number {
return snd.length;
}
public function clearProgress():void {
sndChannel = null;
}
然后,将您的ProgressBar
更改为“已轮询”模式并将来源设置为this
<mx:ProgressBar ... mode="polled" source="{this}" />
完美适合我:)
注意这些功能需要命名为bytesLoaded
和bytesTotal
。它是ProgressBar
的“轮询”模式的一部分。如果你真的想要“手动”模式,你需要创建一个比这个机制更复杂的计时器。