Foros del Web » Creando para Internet » Flash y Actionscript »

¿Se puede comunicar js con flash?

Estas en el tema de ¿Se puede comunicar js con flash? en el foro de Flash y Actionscript en Foros del Web. Buenas, pues eso. Sé que flash se puede comunicar con js pero a la inversa se puede? concretamente desde una función js indicar a un ...
  #1 (permalink)  
Antiguo 27/07/2005, 12:49
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 16 años, 3 meses
Puntos: 380
¿Se puede comunicar js con flash?

Buenas,

pues eso. Sé que flash se puede comunicar con js pero a la inversa se puede?

concretamente desde una función js indicar a un mc que salte a un fotograma concreto, o llamar a una función en flash enviando un parámetro.

Gracias
  #2 (permalink)  
Antiguo 27/07/2005, 13:32
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 15 años, 11 meses
Puntos: 193
Llamar a una funcion desde JavaScript en Flash, asi tal cual no se puede...

Lo que se puede hacer es mediante Javascript setear una variable en el SWF..

Ejemplo

En tu funcion de Javascript pones algo asi:

Código:
function algo(){
     document.tuMovie.SetVariable("_level0.NombreDeVariable","Valor");
}
document es la ruta hacia donde esta tu SWF, ya sea que tengas frames etc etc por lo general es sobre el mismo documento y, "tuMovie" es el id que asignas al objeto en tu codigo HTML

Código:
<OBJECT classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"
codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,40,0"
id="tuMovie" WIDTH="x" HEIGHT="x">
Ahora en tu SWF debes poner un verificador, que cuando la variable "NombreDeVariable" exista o contenga algun valor en especifico ejecute una funcion...

algo asi

Código:
this.onEnterFrame = function() {
	if (_root.NombreDeVariable != undefined) {
		//Hago referencia a _root por que desde Javascript seteamos la variable en level0 que es lo mismo que root.
		done();
		delete this.onEnterFrame;
	}
};
function done() {
	trace("El valor de la variable es "+_root.NombreDeVariable);
}
  #3 (permalink)  
Antiguo 27/07/2005, 14:58
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 16 años, 3 meses
Puntos: 380
Oye, macanudo me sirve el poder cambiar el valor de una variable, dejo al mc escuchando cambios y listos.

Ahora bien, me encuentro con un inconveniente, a ver si se puede solucionar;

resulta que funciona excelente en explorer 6.0/5.0 y mozilla 1.7 pero en cambio en firefox 1.0.4 y en opera 8.0 no reconocen la función SetVariable()

Cita:
Iniciado por Opera8.0
Event thread: click
Error:
name: TypeError
message: Statement on line 1: Type mismatch (usually a non-object value used where an object is required)
Backtrace:
Line 1 of script
document.prueba.setVariable("_level0.fotograma", "3");
At unknown location
[statement source code not available]
Eso Opera y Firefox dice:

Cita:
Iniciado por Firefox 1.0.4
Error: document.prueba.SetVariable is not a function
Osea, lo mismo pero más breve.

¿Tiene que ver con la versión del plug-in instalada para el navegador? Lo curioso es que tanto el FF como el opera son más recientes que el mozilla.

¿Alguna idea?

Muchas gracias Tmeister


p.d. me olvidaba, estoy usando el flashMX, aunque no sé si tenga que ver
  #4 (permalink)  
Antiguo 27/07/2005, 16:30
Avatar de TMeister
Crazy Coder
 
Fecha de Ingreso: enero-2002
Ubicación: En la Oficina
Mensajes: 2.880
Antigüedad: 15 años, 11 meses
Puntos: 193
En cuanto a opera no se, ese navegador nunca me ha gustado ni me gustar. =) asi que me reserve el derecho a hacer pruebas en el :P:P

En cuanto a Firefox utilizo la version 1.0.4 y todo va bien asi como en el Explorer...

Contenedor del SWF

Código HTML:
<html>
<head>
<title>Flash & Javascript</title>
<script language="javascript">
<!--
function putVar(){
		target = document.jsFla;
		target.SetVariable("_level0.miVar","Yeap =)");
}
-->
</script>
</head>
<body>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://fpdownload.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=7,0,0,0" width="550" height="400" id="jsFla" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="movie" value="jsFla.swf" />
<param name="quality" value="high" />
<param name="bgcolor" value="#ffffff" />
<embed src="jsFla.swf" quality="high" bgcolor="#ffffff" width="550" height="400" name="jsFla" align="middle" allowScriptAccess="sameDomain" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
<a href="javascript:putVar();">Pon variable</a>
</body>
</html> 
Primer frame del Fla jsFla

Código PHP:
this.onEnterFrame = function() {
    
out_txt.text += "Aun no hay Nada\n";
    if (
_root.miVar != undefined) {
        
delete this.onEnterFrame;
        
out_txt.text += "El valor de la  variable es "+_root.miVar;
    }
}; 
out_txt es un campo de texto.. (Obvio)

y funciona bien....
  #5 (permalink)  
Antiguo 05/08/2005, 12:46
 
Fecha de Ingreso: octubre-2004
Ubicación: En algún lugar de la República Oriental del Uruguay
Mensajes: 366
Antigüedad: 13 años, 1 mes
Puntos: 0
Quisiera hacer algo similar, la única diferencia es que el link que carga la función para mandar la variable al movie se encuentra en un iframe, y en este ejemplo, la función se define como:

Código:
document.tuMovie.SetVariable("_level0.NombreDeVariable","Valor");
donde document es la ruta hacia donde esta el SWF.

Mi problema es que la ruta, el documento donde está mi SWF no es el mismo donde está el link que carga la función.
Como es que arreglo esto?

gracias
__________________
ratamaster
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 17:04.