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();
}
}
|