Hola a todos.
Escribo para consultarlos por un problema que estoy teniendo en la comunicacion desde AS3 a JS. No sabia si publicar en Javascript o acá, pero me parece que es mas apropiado acá.
El tema es el siguiente: Desde AS3 mediante ExternalInterface.call() llamo una funcion javascript. Esto funciona perfectamente en IE, Chrome, Opera y Firefox siempre y cuando no sete wmode en transparente. Cuando pongo wmode en transparent la comunicacion falla en firefox.
Para cargar el swf utilizo SwfObject.
Simplificando el codigo lo maximo posible tengo:
INDEX.PHP
Código:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<title>Test</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/swfobject/2.2/swfobject.js"></script>
<style type="text/css">
* { padding: 0; margin: 0; }
body { background-color: #CCC; }
</style>
<script type="text/javascript" language="javascript">
//<![CDATA[
function showText(){
alert("Lorem ipsum dolor sit amet, consectetuer adipiscing elit.");
}
//]]>
</script>
</head>
<body>
<div id="swf"></div>
<script type="text/javascript" language="javascript">
//<![CDATA[
var f = {};
var p = {'allowScriptAccess':'always', 'wmode':'transparent'};
var a = {};
swfobject.embedSWF("test.swf", "swf", 400, 300, "9.0.0", null, f, p, a);
//]]>
</script>
</body>
</html>
TEST.SWF
Código:
import flash.external.ExternalInterface;
ExternalInterface.call("showText");
En el index, si uso:
Código:
var p = {'allowScriptAccess':'always'};
en lugar de:
Código:
var p = {'allowScriptAccess':'always', 'wmode':'transparent'};
funciona perfecto.
Insertando estaticamente el swf, si funciona con wmode transparent. Por lo que el problema esta en el uso SwfObject. Según lo que he estado leyendo y verifique con firebug es que el SwfObject no genera los tag Embed.
Gracias desde ya.
Saludos