JavaScript<>ActionScript 2.0 errors
Доброго времени суток. Давно я тут не появлялся. Но вот проблема.
Появилась задача создать кроссбраузерный плеер, проигрывающий нужные звуки по запросу из JavaScript. ActionScript в первом и единственном кадре: Код:
import flash.external.ExternalInterface; <div id="player"> <object width="1" height="1" classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"> <param name="allowScriptAccess" value="sameDomain"> <param name="movie" value="sounds.swf"> <embed width="1" height="1" src="sounds.swf" play="true" loop="false" quality="high" allowScriptAccess="sameDomain" scale="exactfit" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer"></embed> </object> </div> И javascript: sounds = { _movie: null, init: function() { var ie = '\v'==='v'; this._movie = document.getElementById('player').getElementsByTagName(ie ? 'object' : 'embed')[0]; }, play: function(s) { this._movie.play(s); } } sounds.init вызывается при загрузке страницы. Во флеш-ролике есть звук twins. Импорт для ActionScript включён. Когда пишу в консоль sounds.play('twins') выскакивает ошибка uncaught exception: Error in Actionscript. Use a try/catch block to find error. Нет во флеш никаких ошибок. Я проверял (вызов playSound в AS проходит нормально). Очевидно, ошибка возникает при работе ExternalInterface. ------------------------------------------------- Пробовал вместо ExternalInterface использовать SetVariable AS: Код:
mes = null; sounds = { _movie: null, init: function() { var ie = '\v'==='v'; this._movie = document.getElementById('player').getElementsByTagName(ie ? 'object' : 'embed')[0]; }, play: function(s) { this._movie.SetVariable('mes', s); } } Теперь при вызове sounds.play получаем: Error: Error calling method on NPObject! this._movie.SetVariable('mes', s); Что такое NPObject?!! Гугл не помог. Помогите понять, в чём проблема. -------------Это можно не читать----------------- Я пробовал ещё один способ. sounds.play пихал звук в конец массива, а AS на каждом кадре через ExternalInterface вызывал sounds.getStack, возвращавший и удалявший первый элемент этого массива, либо false, если элементов нет. Это работало, но с ощутимой задержкой. Поэтому решил не извращаться, а разобраться с ошибками. |
Проблема решена запуском под локальным сервером.
|
Часовой пояс GMT +3, время: 20:14. |