2013-06-09 5 views
0

Я создаю mp3/пару радио с MVC, где я пытаюсь загрузить URL-адрес из массива.actionscript 3 загрузить URL-адрес из массива

У меня есть класс радио:

public class Radio 
{ 
    private var titel:String; 
    private var url:URLRequest; 
    private var cover:Bitmap; 

    public function Radio(titel:String, url:URLRequest, cover:Bitmap) 
    { 
     this.titel = titel; 
     this.url = url; 
     this.cover = cover; 
    } 

    public function getTitel():String { 
     return titel; 
    } 

    public function getURL():URLRequest { 
     return url; 
    } 

    public function getCover():Bitmap { 
     return cover 

    } 
} 

В контроллере у меня есть это:

public function selectRadio(radio:Radio):void{ 

     model.selectRadio(radio); 
    } 

В связи у меня есть кнопка с eventlistner:

radio.addEventListener(MouseEvent.CLICK, function():void { 
      controller.selectRadio(model.getRadio(0)); 
     }); 

И, наконец, в модели i:

private var radio:Radio = new Radio("P3", new URLRequest("http://live-icy.gss.dr.dk:80/A/A05L.mp3"), drp3); 

private var radioArray:Array = new Array(radio); 
    private var r:Number; 

public function selectRadio(radio:Radio):void { 

     var s:Sound = new Sound(); 
     var chan:SoundChannel = s.play(); 

     s.load(); 

     trace("radio"); 
    } 

    public function getRadios():Array { 
     return radioArray; 

     trace("All radio channels collected"); 
    } 

    public function getRadio(radioNumber:int):Radio { 
     r = radioNumber; 
     return radioArray[radioNumber]; 

     trace("Actual radio collected"); 
    } 

Проблема заключается в функции selectRadio. Я не знаю, как загрузить URL-адрес в массивы. Это должно быть s.load (- что-то здесь); Причина, по которой я это делаю, заключается в том, что я хочу иметь несколько радиостанций.

Надеется, что вы можете помочь :)

ответ

0
var s:Sound = new Sound(radio.getURL()); 
var chan:SoundChannel = s.play(); 

функции загрузки будет автоматически вызывается конструктором, а также не забудьте остановить предыдущую SoundChannel.

и здесь: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/media/Sound.html вы найдете все о Sound

+0

Спасибо большое, он работает сейчас :) – user2468100

+0

О кстати, вы знаете, чтобы сделать поток играть только один раз? Если я нажимаю его более одного раза, он играет два потока друг над другом. Я пробовал оператор if с помощью s.close(), но это не сработало. – user2468100

+0

Как я уже писал, вам нужно остановить предыдущий SoundChannel перед воспроизведением нового звука. Поэтому вам нужно сохранить ссылку (например, в частной собственности) на используемый в настоящее время SoundChannel и вызвать 'soundChannel.stop()' прямо перед воспроизведением нового звука. – kosmo

Смежные вопросы