Si queremos pasar un parametro (o más) desde Flash, agregamos al código Actionscript:
Código :
campo.text = String(ExternalInterface.call("saludar1","zguillez"));
Y en el html:
Código :
function saludar1(nombre){
return ("Hola "+nombre);
}
Pueden ver el ejemplo
aquí
Bien, hasta aquí vimos como llamar a una función JavaScript desde ActionScript y poder mostrar el resultado en un campo de texto dinámico. Ahora haremos el proceso al revés , llamaremos de JavaScript a una función de ActionScript.
En este ejemplo, llamaré desde el body:
<body onload="cambiaTitle()">
A una función que mostrará un Alert y este a su vez, llamará a una función ActionScript.
Para este propósito usaremos el método addCallback que recibe dos parámetros, el primero es el
nombre de la funcion de javascript en string y el segundo, el nombre de la función de ActionScript que ejecutaremos (tiene que ser función).
Código :
var nombre:String = "usagi";
function callMe():String {
return nombre + "_" + Math.random() * 100;
}
ExternalInterface.addCallback("callJavaScript", callMe);
He creado una funcion callMe que retorna un String (lo enviará a JS) donde tomará la variable nombre y le agregará un número aleatorio (sólo para efectos del ejemplo)
Y en el HTML escribo:
Código :
function cambiaTitle(){
alert(ejemplo3.callJavaScript());
}
Pueden ver el ejemplo
aquí
Cuando hacemos este proceso debemos tener en cuenta
algunas cosas importantes:
El Object debe tener el id igual al que usamos al momento de invocar la función javascript
<object id="ejemplo3" ... >
<param name="allowScriptAccess" value="always" />
Lo mismo sucede con el embed
<embed name="ejemplo3"
allowScriptAccess="always" ...
Estos cambios deben de hacerse, sino no funcionaría. Asimismo, cambiar el parametro
allowScriptAccess a
always
Los id y name deben ser los mismo que utilizamos en JS para poder identificar con quien quieres interacturar:
alert(ejemplo3.callJavaScript());
Por otro lado, también podemos
además devolver desde JavaScript una respuesta.
Sólo tenemos que recibir un parámetro en nuestra función de ActionScript:
Código :
var nombre:String = "Mariux: ";
function callMe(name:String):String {
return nombre + name;
}
ExternalInterface.addCallback("callJavaScript", callMe);
Y pasar el mensaje desde JavaScript:
Código :
function cambiaTitle(){
alert(ejemplo4.callJavaScript("Mensaje desde JAVASCRIPT"));
}
pueden ver el ejemplo
aquí
Hemos visto las formas como poder utilizar la clase
ExternalInterface de una manera simple, limpia y fácil. Espero les sirva.
Autor: eldervaz
http://www.cristalab.com/tips/50326/como-comunicar-flash-y-javascript-en-actionscript-3
Usuarios que han visto este tema también han visto...
- Lincar páginas a archivos JavaScript
- Prueba ultima modificación
- Cambio de Imagen en JavaScript
- Abrir Popup
- Etiqueta desplazándose por el explorador en JavaScript
- Versión imprimible de este documento
- Enviar por e-mail este documento