ÐобÑого вÑемени ÑÑÑок. Ðавно Ñ ÑÑÑ Ð½Ðµ поÑвлÑлÑÑ. Ðо Ð²Ð¾Ñ Ð¿Ñоблема.
ÐоÑвилаÑÑ Ð·Ð°Ð´Ð°Ñа ÑоздаÑÑ ÐºÑоÑÑбÑаÑзеÑнÑй плееÑ, пÑоигÑÑваÑÑий нÑжнÑе звÑки по запÑоÑÑ Ð¸Ð· 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, еÑли ÑлеменÑов неÑ. ÐÑо ÑабоÑало, но Ñ Ð¾ÑÑÑимой задеÑжкой. ÐоÑÑÐ¾Ð¼Ñ ÑеÑил не извÑаÑаÑÑÑÑ, а ÑазобÑаÑÑÑÑ Ñ Ð¾Ñибками.