Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 05.02.2013, 13:32
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

JavaScript<>ActionScript 2.0 errors
Доброго времени суток. Давно я тут не появлялся. Но вот проблема.
Появилась задача создать кроссбраузерный плеер, проигрывающий нужные звуки по запросу из JavaScript.

ActionScript в первом и единственном кадре:
Код:
import flash.external.ExternalInterface;

function playSound (s) {
	var sound = new Sound();
	sound.attachSound(s);
	sound.start();
}

ExternalInterface.addCallback('play', null, playSound);
Вставка ролика:
<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;

function playSound (s) {
	var sound = new Sound();
	sound.attachSound(s);
	sound.start();
}

_root.onEnterFrame = function() {
	if (mes!==null) {
		playSound(mes);
                mes = null;
	}
}
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.SetVariable('mes', s);
 }
}


Теперь при вызове sounds.play получаем:
Error: Error calling method on NPObject!
this._movie.SetVariable('mes', s);

Что такое NPObject?!!

Гугл не помог. Помогите понять, в чём проблема.

-------------Это можно не читать-----------------
Я пробовал ещё один способ. sounds.play пихал звук в конец массива, а AS на каждом кадре через ExternalInterface вызывал sounds.getStack, возвращавший и удалявший первый элемент этого массива, либо false, если элементов нет. Это работало, но с ощутимой задержкой. Поэтому решил не извращаться, а разобраться с ошибками.

Последний раз редактировалось Раед, 06.02.2013 в 11:15.
Ответить с цитированием
  #2 (permalink)  
Старый 07.02.2013, 15:23
Аватар для Раед
''
Отправить личное сообщение для Раед Посмотреть профиль Найти все сообщения от Раед
 
Регистрация: 11.12.2011
Сообщений: 636

Проблема решена запуском под локальным сервером.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Класс Javascript в Codeigniter 2.0 sultan.khayrulin jQuery 1 21.03.2011 20:47
Аналог события ActionScript onPress в javaScript Slavenin Events/DOM/Window 4 20.11.2010 21:34
Последние книги по JavaScript! monolithed Учебные материалы 7 26.10.2010 19:40
Выдвет ошибку JavaScript Ромио Opera, Safari и др. 4 21.10.2010 20:34
Путь от JavaScript к ActionScript, советы ? JustRaider Общие вопросы Javascript 6 27.07.2010 15:11