Вопрос

Я сделал маленькие карты смешивания Mashup, перевести API и Flickr. Я получаю указания от своей карты и делаю MP3 -файлы на лету, чтобы воспроизводить их одновременно, но они играют только в Firefox, а для остальных браузеров я получаю только свой первый звуковой канал с фоновой музыкой. Не могу понять, почему. Любая помощь высоко ценится.

    private var _sound:Sound;
private var _sc:SoundChannel;
private var _isPlaying:Boolean;
private var _url:String;
private var myWatcher:ChangeWatcher;
private var isPlaying:Boolean;

private function _generateSpeech():void {

 var txt:String = description.text;
 var url:String = "http://translate.google.com/translate_tts?tl=en&q=" + txt;
 _url = url;
 var req:URLRequest = new URLRequest(url);

 _sound = new Sound();
 _sound.addEventListener(Event.OPEN, _soundOpenHandle, false, 0, true);
 _sound.addEventListener(ProgressEvent.PROGRESS, _soundProgHandle, false, 0, true);
 _sound.addEventListener(Event.COMPLETE, _soundLoadedHandle, false, 0, true);
 _sound.addEventListener(IOErrorEvent.IO_ERROR, _errorHandle, false, 0, true);
 _sound.load(req,null); 
}
private function _soundOpenHandle(e:Event):void {isPlaying = false;}
private function _soundProgHandle(e:ProgressEvent):void {isPlaying = true;}
private function _soundLoadedHandle(e:Event):void {isPlaying = true;}
private function _playbackCompleteHandle(e:Event):void {isPlaying = false;}
private function _errorHandle(e:IOErrorEvent):void {trace(e);}

private function _playSpeech():void {
 _generateSpeech(); 
 _sc = new SoundChannel();
 if (!isPlaying){_sc = _sound.play(0,0,null);}
 _sc.addEventListener(Event.SOUND_COMPLETE, _playbackCompleteHandle, false, 0, true);
}
public function initWatcher():void {
 ChangeWatcher.watch(description, "text", watcherListener); 
}
// Event listener when binding occurs. 
public function watcherListener(event:Event):void {   
 if (!isPlaying){_playSpeech(); }
}
Это было полезно?

Решение

_sc = new SoundChannel();
 if (!isPlaying){_sc = _sound.play(0,0,null);}
 _sc.addEventListener(Event.SOUND_COMPLETE, _playbackCompleteHandle, false, 0, true);

if (!isPlaying){
    _sc = _sound.play(0,0,null);}

    if( _sc ) {
        _sc.addEventListener(Event.SOUND_COMPLETE, _playbackCompleteHandle, false, 0, true);
    }
}
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top