Cuando estamos haciendo sites híbridos, osea páginas XHTML con partes en Flash, es probable que esas partes en Flash sean la cabecera o algún menú que es común para todas las páginas.
Pero aun siendo común para todas las páginas es probable que necesitemos que ese SWF tenga unas características asignadas dependiendo de la página en la que se encuentre. Por ejemplo, que el botón de la sección en la que nos encontremos esté iluminado, o que el SWF se inicie reproducciendo una animación concreta para cada sección.
La solución más fácil sería crear un SWF independiente para cada página con los parámetros que nos interesa para cada página.. pero eso nos resultaría un trabajo bastante tedioso.
Lo mejor es hacer que el propio SWF se inicie con unos parámetros diferentes según el HTML en el que esté colocado.
Para saber en que página estamos utilizaremos el objeto location de Javascript, y ExternalInterface de Actionscript.
Pondremos este código al inicio de la pelicula:
Código :
var ruta:Array = String(ExternalInterface.call("function href(){return (location.href)}")).split("/"); var pagina:String = ruta[ruta.length - 1].replace(".htm","");
Con esto sabremos el nombre del archivo HTML en el que se encuentra ejecutandose el SWF. Apartir de ahi asignaremos los parámetros que nos interese para cada caso.
Por ejemplo haremos que según la página en la que estemos iniciaremos la película en un fotograma u otro:
Código :
var num:uint; switch (pagina) { case "servicios" : num = 2; break; case "descargas" : num = 3; break; case "contacto" : num = 4; break; default : num = 1; } gotoAndStop(num);
¿Sabes SQL? ¿No-SQL? Aprende MySQL, PostgreSQL, MongoDB, Redis y más con el Curso Profesional de Bases de Datos que empieza el martes, en vivo.
Por eldervaz el 01 de Febrero de 2009
Por Cristian el 01 de Febrero de 2009
Hace mucho que buscaba solución a este "problema" gracias ...... pero es posible que expliques un poco más de donde hay que colocar los codigos, como dicen en mi pais "como si fuese un niñito de 5 años" .... gracias y quedo a la espera de tus comentarios
Cristian-blog :
Hace mucho que buscaba solución a este "problema" gracias ...... pero es posible que expliques un poco más de donde hay que colocar los codigos, como dicen en mi pais "como si fuese un niñito de 5 años" .... gracias y quedo a la espera de tus comentarios
En el tip lo dice, todo ese código va seguido en el primer fotograma de tu película (o en el constructor de la clase Main).
Por juancube el 01 de Febrero de 2009
ejem
{
case "contacto" : // Contacto es el nombre del .htm de la sección o como?
de antemano gracias.
juancube-blog :
ejem
{
case "contacto" : // Contacto es el nombre del .htm de la sección o como?
de antemano gracias.
"contacto" es el nombre del html , osea -> contacto.html
Eso lo recuperas ejecutando una función javascript con ExternalInterface que te devuelve location.href.
Con el split("/") divides la ruta por carpetas y obtines la última que es el nombre de la página.
Con el replace() eliminas la extensión, con lo que te quedas solo con el nombre.
Y listo
var ruta:Array = String(ExternalInterface.call("function href(){return (location.href)}")).split("/");
var pagina:String = ruta[ruta.length - 1].replace(".htm","");
Siguiendo con el ejercicio del split aqui un one-liner
Código :
fernando :
Siguiendo con el ejercicio del split aqui un one-liner
Código :
Cierto, asi es más práctico
Gracias por el aporte Fernando
Una pregunta, como es un Javascript, ¿Funciona en todo Navegador+Sistema?
Por absulit el 02 de Febrero de 2009
creo q Freddie tiene razón por el lado que se puede hacer un archivo de configuración por xml que se puede cargar desde una base de datos.
Cada uno lo aplica como mejor le parezca.
Por Javier Ramos el 04 de Febrero de 2009
Javier Ramos-blog :
En AS2 puedes llamar a esa función javascript con getURL();
Por Javier Ramos el 05 de Febrero de 2009
Por netsolweb el 10 de Febrero de 2009
Bueno he probado tus codigos de varias formas y no logro dar con el resultado.
Te explico:
El header es en flash y común para todas las paginas de sitio y cada botón debe quedar encendido cuando navegue por ellas.
En el header tengo un preload......
Preguntas
1.-Donde coloco el código 1 que señalas?
var ruta:Array = String(ExternalInterface.call("function href(){return (location.href)}")).split("/");
var pagina:String = ruta[ruta.length - 1].replace(".htm","");
2.- y donde coloco el otro codigo?
var num:uint;
switch (pagina)
{
case "servicios" :
num = 2;
break;
case "descargas" :
num = 3;
break;
case "contacto" :
num = 4;
break;
default :
num = 1;
}
gotoAndStop(num);
3.- Con el aporte de Fernando, cambia algo?
Gracias, me ayudarias mucho
Por ww el 12 de Febrero de 2009
Por rowilson el 17 de Marzo de 2009
Por rowilson el 18 de Marzo de 2009
var pagina:String = String(ExternalInterface.call("function getURL(){ return local.href; }")).split("/").pop().split(".").slice(0, -1).join(".");
y tampoco, espero alguien me pueda ayudar
Por diegood el 16 de Octubre de 2009
Ejemplo por pasos
var cadena:String = "http://www.pxs.com/faqs.html;
var cadArr:Array = cadena.split("/");
//convertimos la direccion en elementos de un array
var ultimo:String = cadArr.pop();
//recuperamos el ultimo elemento faqs.html
cadArr = ultimo.split(".");
//convertimos el ultimo elemento en un array
ultimo = cadArr.shift();
//recuperamos el primer elemento
trace(cadena); // resultado faqs
Forma abreviada
var cadena:String = String("http://www.pxs.com/faqs.html").split("/").pop().split(".").shift();
trace(cadena); //resultado faqs
Aplicado al ejemplo de zguillez
colocar en el primer fotograma no es necesario insertar nada en el html y si no funciona probarlo en el servidor
var cadena:String = String(ExternalInterface.call("function href(){return (location.href)}")).split("/").pop().split(".").shift();
trace(cadena);