Estoy tratando de llamar a una función en un script de acción usando la API ExternalInterface.addCallback
, pero parece que no puedo hacer que funcione. Aquí es lo que tengo:Accediendo a una función de ActionScript a través de Javascript
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!";
}
}
}
NOTA: Estoy compilando esto en un SWF utilizando el compilador Flex mxmlc si lo que importa.
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>
El error que estoy recibiendo es:
Uncaught TypeError: Object #<HTMLObjectElement> has no method 'getStringJS'
También probé la adición en un tiempo de espera en caso de que el archivo SWF no estaba cargando, pero tampoco tuvo éxito con ese método.
¿Alguna idea?
Saludos,
Mike
Buen ejemplo. Aún funciona en 2017. Para otros, también se puede encontrar otra información adicional aquí: http://help.adobe.com/en_US/ActionScript/3.0_ProgrammingAS3/WS5b3ccc516d4fbf351e63e3d118a9b90204-7cb1.html – Aleks