ActionScript Sound Channel играет только в Firefox
-
11-10-2019 - |
Вопрос
Я сделал маленькие карты смешивания 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);
}
}
Не связан с StackOverflow