Возможно ли, что вы вызываете функцию beep из вашего Javascript до того, как beep.mp3 полностью загрузится в swf?Вы можете получить ошибку, вызвав .play () для объекта Sound, который еще не готов.
Попробуйте либо обернуть вызов .play () в блок try / catch, либо, возможно, поместить ExternalInterface.addCallbackобъявление внутри обработчика onLoadComplete для звукового объекта.
beepSound.addEventListener(Event.COMPLETE, onLoadComplete);
beepSound.load(request);
function onLoadComplete(e:Event):void{
ExternalInterface.addCallback("beep", playBeep);
beepSound.removeEventListener(Event.COMPLETE, onLoadComplete);
}
РЕДАКТИРОВАТЬ: Конечно, это не учитывает следующий вопрос - Как Javascript узнает, что mp3 загрузился?В этом случае обработчик onLoadComplete может также вызвать
ExternalInterface.call("notifyJSThatMP3isHere", "someArgs");
, в котором notifyJSThatMP3isHere - это функция, которую вы определили в своем Javascript, которая позволяет ему знать, что теперь можно попробовать вызвать выставленный «звуковой сигнал» swfфункция.