JavaScript для прошивки через ExternalInterface - PullRequest
2 голосов
/ 28 мая 2009

Мне интересно, может ли кто-нибудь просмотреть мой код. Я пытаюсь передать фиктивную переменную из javascript в actionscript 3 со следующим кодом:

HTML:
<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"<br> id="music_player" width="500" height="375"<br> codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab"><br> <param name="movie" value="music_player.swf" /><br> <param name="quality" value="high" /><br> <param name="bgcolor" value="#869ca7" /><br> <param name="allowScriptAccess" value="always" /><br> <embed src="music_player.swf" quality="high" bgcolor="#869ca7"<br> width="500" height="375" name="music_player" align="middle"<br> play="true" loop="false" quality="high" allowScriptAccess="always"<br> type="application/x-shockwave-flash"<br> pluginspage="http://www.macromedia.com/go/getflashplayer"><br> </embed><br> </object>

Javascript:
var nextTrackLocation = "dummyString";
getFlashMovie ( "music_player") jsAlert (nextTrackLocation).

function getFlashMovie(movieName) {
  var isIE = navigator.appName.indexOf("Microsoft") != -1;
  return (isIE) ? window[movieName] : document[movieName];  }  

и код действия:
ExternalInterface.addCallback ("getNextTrack", jsAlert);

function jsAlert(mess){
ExternalInterface.call("alert", mess);
}

Кто-нибудь видит ошибку?

1 Ответ

2 голосов
/ 28 мая 2009

Ваш вопрос очень запутанный. Я думаю, что вы делаете две ошибки здесь.

Из Javascript вы пытаетесь вызвать функцию в Actionscript с именем "jsAlert", но эта функция в Actionscript представлена ​​как "getNextTrack". Я думаю, что это должно быть:

getFlashMovie("music_player").getNextTrack(nextTrackLocation);

Во-вторых, где вы определяете функцию в Actionscript, которую вы упустили из виду, что ExternalInterface.addCallback на самом деле принимает три параметра.

ExternalInterface.addCallback("getNextTrack", null, jsAlert);
...