2009-05-28 2 views
2

Ich frage mich, ob jemand über meinen Code schauen könnte. Ich versuche, ein Dummy-Variable von JavaScript zu übergeben 3 mit dem folgenden Code in Actionscript:Javascript zu blinken via ExternalInterface

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

und die Action:
ExternalInterface.addCallback ("getNextTrack", jsAlert);

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

Wer sieht einen Fehler?

+0

sorry, die ersten beiden Zeilen des Javascript sind in der Funktion – danwoods

Antwort

2

Ihre Frage ist sehr verwirrend. Ich denke, du machst hier zwei Fehler.

Von Javascript Sie versuchen, eine Funktion in Actionscript aufgerufen "jsAlert" aber die Funktion ist in Actionscript als "getNextTrack" ausgesetzt. Ich denke, es sein sollte:

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

Zweitens, in dem Sie die Funktion in Actionscript definieren Sie übersehen, dass die ExternalInterface.addCallback tatsächlich dauert drei Parameter.

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

Danke für die Antwort ‚getNextTrack‘ !!! mit 3 Argumente mit ExternalInterface.addCallback gibt den folgenden Fehler: 1137: Falsche Anzahl der Argumente. Erwartet nicht mehr als 2. – danwoods

+0

mit 'ExternalInterface.addCallback ("jsAlert", jsAlert);' behebt das Problem. Vielen Dank!!! Die Dokumentation besagt, dass das zweite der drei Argumente einen Bezugspunkt darstellt. Könnten Sie das näher erläutern? – danwoods

+0

Dan. Entschuldigung wegen des Parameterkommentars, Sie haben Recht. Ich hatte AS2 in meinem Kopf, der drei statt zwei Parameter benötigt. Froh, dass es jetzt funktioniert! – Luke