kadazuro.com
 TutorialesCómo hacer que dos películas flash se comuniquen entre frames (marcos)
 
por: kadazuro
imprimir este documento
 


En este caso usaremos fscommand, para poder lograr que los archivos swf se comuniquen entre sí.

explicación:
el frameset esta compuesto por dos frames, el frame de la izquierda llamado menu y el de la derecha contenidos.
contenidos tiene al html llamado "target_movie.html" quien contiene en si el archivo "target_movie.swf"; menu, por su parte, tiene el archivo "main.html" y el swf "main.swf",
contenidos tiene labels llamadas: label1, label2 y label3 ( los nombres son indiferentes puedes usar los nombres para labels que gustes)

las acciones en los botones main.swf sería las siguientes :

On (Release)
FS Command ("init", "label1")
End On

lo que varía en los otros botones es el nombre del argumento ( vendría a ser el nombre del label al que le indicaremos a la película que se vaya, osea el label1, por label2 o label3); ahora explico porqué el menú main.html tiene el siguiente javascript que es el que hace que todo funcione:

<script language=JavaScript>
<!--
var InternetExplorer = navigator.appName.indexOf("Microsoft") != -1;
// Toma todos los mensajes FSCommand messages en la película Flash
function main_DoFSCommand(command, args) {
if ( command == "init" ) {
frameRef=parent.frames.contenidos; target_movieObj= InternetExplorer ? frameRef.target_movie :frameRef.document.target_movie;
target_movieObj.TGotoLabel("_level0",args);
}
}
// Gancho para Internet Explorer
if (navigator.appName && navigator.appName.indexOf("Microsoft") != -1 && navigator.userAgent.indexOf("Windows") != -1 && navigator.userAgent.indexOf("Windows 3.1") == -1)
{ document.write('<SCRIPT LANGUAGE=VBScript\> \n');
document.write('on error resume next \n');
document.write('Sub main_FSCommand(ByVal command, ByVal args)\n');
document.write(' call main_DoFSCommand(command, args)\n');
document.write('end sub\n'); document.write('</SCRIPT\> \n');
}
//-->
</script>

trataré de explicarlo brevemente.
al presionar el boton le decimos al javascript que el comando es init, y el argumento labelx (ej label1).
el javascript tiene dicho que si el comando es init

if ( command == "init" )

se valla al frame contenidos

frameRef=parent.frames.contenidos;

y le decimos a cuál swf hacer target( o sea, al swf que está en target_movie.html)

target_movieObj= InternetExplorer ? frameRef.target_movie :frameRef.document.target_movie;

cuando ya tenemos identificado al target swf le decimos que se valla al label argumento(ej.label1)

target_movieObj.TGotoLabel("_level0",args);

más claro aun : logramos que las dos películas swf se comuniquen.

importantísimo:
poner bien las etiquetas de object/embed. ej.

<object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://active.macromedia.com/flash2/cabs/swflash.cab#version=4,0,0,0"
id=target_movie width=100% height=100%>
<param name=movie value="target_movie.swf">
<param name=quality value=high>
<param name=scale value=exactfit>
<param name=bgcolor value=#000099>
<embed src="target_movie.swf"
quality=high
scale=exactfit
bgcolor=#000099
width=100%
height=100%
name="target_movie"
swliveconnect="true"
type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/shockwave/download/index.cgi?P1_Prod_Version=ShockwaveFlash">
</embed>
</object>

de otra manera no funcionará.

nota adicional:

al indicarle a flash que se vaya a x label, solo lo de indicamos eso, no le decimos que haga nada, vieniendo a ser algo así como Go to and Stop ("label1"), si se necesitara que flash fuera y corriera a partir del labelx, ej: Go to and Play ("label1"), se requiere poner una línea más en el código.
hubica esta línea

target_movieObj.TGotoLabel("_level0",args);
}
}

en el siguiente renglón agrega el código para que quede así:

target_movieObj.TGotoLabel("_level0",args);
target_movieObj.Play();
}
}

 
regresar
frameset: <FRAMESET>: set de marcos, juego de marcos
frame: <FRAME> marco.
label:etiqueta
 
Historial:

  • setiembre 22,2000: se arregla función para regrear al tutorial para usuarios de NN
  • marzo 27,2000: se agrega diccionario, expliacación para goto and play.
  • marzo 26,2000: se arreglan algunos errores de ortografía.
  • marzo 25,2000: se publica este documento