La forma actualizada "moderna" para incrustar un objeto flash, según Adobe:Flash: ExternalInterface funciona con la etiqueta embed pero no con la etiqueta de objeto
<object id="theFlash" name="theFlash" classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000"
width="400" height="225" align="middle">
<param name="movie" value="theflashfile.swf" />
<param name="allowScriptAccess" value="always" />
<!--[if !IE]>-->
<object type="application/x-shockwave-flash"
data="getStreamFrame.swf" width="400" height="225">
<param name="allowScriptAccess" value="always" />
<!--<![endif]-->
<a href="http://www.adobe.com/go/getflash">
<img src="http://www.adobe.com/images/shared/download_buttons/get_flash_player.gif" alt="Get Adobe Flash player" />
</a>
<!--[if !IE]>-->
</object>
<!--<![endif]-->
</object>
Al intentar llamar a una función de AS3 en el SWF, desde javascript:
var flashObj = document.getElementById('theFlash');
flashObj.someASFunction();
(y en el lado AS :)
import flash.external.*;
function someASFunction() {
//show some text
}
ExternalInterface.addCallback("someASFunction", someASFunction);
Este no funciona en Firefox y Chrome. El flash funciona y carga. flashObj obtiene una referencia al objeto, pero alguna función AS no está definida y no se llama.
Si se sustituye la etiqueta de objeto con una etiqueta embed:
<embed id="theFlash" name="theFlash" height="225" width="400" align="middle"
type="application/x-shockwave-flash" allowscriptaccess="always"
src="theflashfile.swf" />
Entonces funciona en Firefox y Chrome (la función como se llama y funciona correctamente) - (no funciona en IE aunque).
¿Cómo es que no funciona con una etiqueta de objeto?
¿Qué tan "seguro" es usar la etiqueta de inserción en lugar de la etiqueta de objeto? ¿No está obsoleto?
Tenga en cuenta que definitivamente no es un problema de tiempo - Si llamo a la función AS desde JS desde una función onclick - entonces los resultados son los mismos.
no molestar con la incrustación estática, use swfobject! – grapefrukt
La etiqueta de inserción se incluye en las especificaciones de HTML5. http://html5doctor.com/element-index/#e –
Me encuentro con el mismo problema.Al usar swfobject 2.2, Chrome obtiene la etiqueta del objeto, y luego mi función AS no funciona. Si utilizo swfobject 1.5, Chrome obtiene la etiqueta de inserción y mi función AS funciona. Me gustaría usar el último swfobject, pero también necesito que mi función AS funcione. ¿Alguna actualización aquí? – Nick