Question

I have made a little mashup mixing maps, translate api and flickr. I get the directions from my map and make mp3 files on the fly to play them at the same time but they only play in firefox and for the rest of the browsers I only get my first sound channel with background music. can't figure out why. Any help is highly appreciated.

    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(); }
}
Was it helpful?

Solution

_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);
    }
}
Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top