Aufrufen einer ActionScript-Funktion über Javascript
Ich versuche, eine Funktion aufzurufen, die in einer Aktion Skript mit der ExternalInterface.addCallback
- API, aber ich kann nicht scheinen, um es zu arbeiten. Hier ist, was ich habe:
ActionScript:
//MyClass.as
package {
import flash.display.Sprite;
import flash.external.ExternalInterface;
public class MyClass extends Sprite
{
public function MyClass()
{
ExternalInterface.addCallback('getStringJS', getStringAS);
}
public function getStringAS():String
{
return "Hello World!";
}
}
}
HINWEIS: ich bin zu kompilieren in eine swf-Datei mit der flex mxmlc-compiler, falls jene Gegenstände.
HTML/Javascript:
<!doctype html>
<html>
<head>
<title>User Identification</title>
<head>
<body>
<object id="MyClass" name="MyClass" type="application/x-shockwave-flash" data="MyClass.swf" width="1" height="1">
<param name="movie" value="MyClass.swf">
<embed src="MyClass.swf" width="1" height="1">
</object>
<script type="text/javascript">
var flash = document.getElementById("MyClass");
var str = flash.getStringJS();
alert(str);
</script>
</body>
</html>
Die Fehler ich erhalte, ist:
Uncaught TypeError: Object #<HTMLObjectElement> has no method 'getStringJS'
Ich auch versucht, indem in ein timeout im Fall der swf-Datei nicht laden, aber ich hatte keinen Erfolg mit dieser Methode.
Irgendwelche Gedanken?
Jubel
Mike
Du musst angemeldet sein, um einen Kommentar abzugeben.
Habe ich es herausgefunden. Der Schlüssel Weg, um zu signalisieren, das javascipt durch
ExternalInterface.call
so wissen wir sicher, dass die swf-Datei geladen wird. Die meisten "Universellen" Weg, dies zu tun ist wie folgt:MyClass.als
index.html
Ich denke das Thema ist eine Frage der flash nicht geladen werden. Ich versuchte Ihren code mit dem Fenster.onload-Ereignis und es funktionierte für mich:
Dem flash ist die gleiche...
HTML/JS :
Hilft das?