2010-08-25 40 views
0

我假設我缺乏知識(我剛剛開始學習Flex,昨天,哈!)是我無法弄清楚如何使其正確工作的原因 - 它甚至可能只是成爲代碼定位問題。Flex中的流式聲音控制(新手)

我有幾個MP3文件,我試圖流。現在我只是試圖開始和停止主要的MP3。我已經成功播放了MP3,但停止播放是我遇到的問題。這裏是我當前的代碼:

<mx:Script> 
<![CDATA[ 
    import flash.events.Event; 
    import flash.media.*; 
    import flash.media.Sound; 
    import flash.media.SoundLoaderContext; 
    import flash.net.URLRequest; 
    import mx.controls.Button; 

    //set current track & load song 
      var currentTrack:Number = 1; 
    var song:Sound = new Sound(); 
    var req:URLRequest = new URLRequest("../assets/0"+currentTrack+".mp3"); 
    var context:SoundLoaderContext = new SoundLoaderContext(8000, true); 

    //CREATE BUTTONS (being loaded in mx:application on load) 
      private function createControls():void { 
     var playButton:Button = new Button(); 
     playButton.label = "PLAY"; 
     playButton.id = "playButton"; 
     playButton.addEventListener(MouseEvent.CLICK, clickPlayHandler); 
     playerControls.addChild(playButton); 

     var stopButton:Button = new Button(); 
     stopButton.label = "STOP"; 
     stopButton.id="stopButton"; 
     stopButton.addEventListener(MouseEvent.CLICK, clickStopHandler); 
     playerControls.addChild(stopButton); 
    } 

    //HANDLE CLICKS 
    private function clickPlayHandler(event:Event):void { 
     var button:Button = event.currentTarget as Button; 
     song.load(req, context); 
     song.play(); 
    } 
    private function clickStopHandler(event:Event):void { 
     var button:Button = event.currentTarget as Button; 
     //This is not working... 
        song.close(); 
    } 
]]> 

所以我已經得到了song.play工作,但song.close不會停止流,它什麼都不做。任何線索我如何能夠正確地做到這一點/我做錯了什麼?

謝謝! :)

回答

3

您需要使用SoundChannel類停止播放聲音,你分配這樣說:

 
private var channel:SoundChannel = new SoundChannel(); 

//first assign it to the sound variable 
channel = sound.play(); 

//then you can stop your sound this way 
channel.stop(); 
+0

甜!那正是我所錯過的。它的工作現在完美。謝謝! :) – 2010-08-25 05:57:52