2011-02-02 72 views
0

在下面的代碼如何可以在進度條被安裝於音,並指出它的進展附加進度

<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> 

回答

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}" /> 

完美的作品對我來說:)

注意的功能需要被命名爲bytesLoadedbytesTotal。這是ProgressBar的「輪詢」模式的一部分。如果你真的想要「手動」模式,你需要創建一個比這個機制更復雜的定時器。

+0

由於它的工作,所以如果歌曲再次播放如何重置初始化進度條再次.. – Rajeev 2011-02-02 17:57:44