Dudas sobre SWFAddress
6 seguidores
Hola.
Estoy empezando a usar SWFAddress en Flash y se me plantean algunas dudas.
Por ejemplo, en este sitio, a cada foto le corresponde una url (url base + titulo de la foto). Cambiar la url es algo sencillo, con setValue(), pero ¿como podemos recuperarla cuando, por ejemplo, alguien entra directamente con una url que no es el index?
Lo único que se me ocurre es tener un array con todos los titulos e ir comprobandolos uno por uno hasta dar con el correcto. ¿Es esta la manera?
almostdesign
almostDesign
Muchas gracias, a ver si en un par de días acabo esto y lo posteo para que le echeis un ojo.
www.javierlargen.com
Aun está en pruebas y tengo que arreglar algún pequeño fallo (y reducir el peso de los videos, porque no va fluído).
almostdesign
marvin
Hola una vez más he resuelto el problema...
al parecer la manera de incrustar el archivo .swf en la página influye.yo lo q hacia era utilizar el html q me generaba flash al publicar y añadirle los javascripts.
SWFAddress es un add-on the SWFObject.
almostdesign
Si que funciona en local, pero tienes que entrar en el panel de configuración de privacidad del player de flash y darle permisos a la carpeta donde estás testeando.
marvin
Hola una vez más he resuelto el problema...
al parecer la manera de incrustar el archivo .swf en la página influye.yo lo q hacia era utilizar el html q me generaba flash al publicar y añadirle los javascripts.Es decir :
<code>
<object>
<param>
<param><param><param><embed>
</object>
</code>
Ahora hago:
<code>
<div>
<strong>In order to view this page you need JavaScript and Flash Player 8+ support!</strong>
</div>
<script>
// <CDATA>
</script>
</code>
Bueno y eso es todo de nuevo gracias
marvin
Hola a todos
1º tmmds ya he agregado los javascrips a mi página de inicio q llama al flash.
2º ernieb el swfadress efectivamente no funciona en local.desde local no funciona la comunicacion de flash con javascript al importar flash.external
,debes probarlo en un servidor.
Muchas gracias por vuestro tiempo,estare atento por si se os ocurre algo más.
ernieb
Una pregunta: ¿puede ser que el swfaddress no funcione en local?
Desconozco la razón marvin, pero a mi el ejemplo idoneo que es en el que funciona el boton de alante/atras, y en el que puedes copiar la url, etc. no me funciona en local.
Esta tarde probare en un apache a ver que pasa... ;)
Ya contare. Te lo comento no vaya a ser que lo hayas hecho todo bien, y el error se encuentre en este punto.
tpmmds
Hola:
En principio parece que todo está bien.
Puede ser qu e no hayas añadido al html que contiene al swf las referencias a los archivos swfobject.js y swfaddress.js. Estos dos archivos javaScript TAMBIEN hay que subirlos al servidor.
Por ejemplo, si los anteriores archivos los has subido a las carpetas que trae por defecto, deberías añadir en la cabecera del html las siguientes líneas:
<code><script></script>
<script></script></code>
Deberían haber salido 2 lineas de código html pero como llevan signos mayor y menor, parece que no las muestra. De todas formas, en la documentación que te habras descargado vienen. Son simplemente dos tag's que le indican al navegador dónde encontrar los archivos js que he comentado antes.
Un saludo.
marvin
hola buscando info sobre swfadress he llegado hasta aqui.Mi problema es q no consigo que cambie la dirección url del navegador.en principio parece sencillo y creo q doy los pasos correctos,pero nada.<code>
#include "includes/SWFAddress.as"
import flash.external.*;
seccion1_btn.onPress=function(){
SWFAddress.setValue('/seccion1');
}
seccion2_btn.onPress=function(){
SWFAddress.setValue('/seccion2');
}
seccion3_btn.onPress=function(){
SWFAddress.setValue('/seccion3');
}
seccion4_btn.onPress=function(){
SWFAddress.setValue('/seccion4');
}
SWFAddress.onChange = function() {
var seccion=SWFAddress.getValue();
_root.gotoAndPlay(seccion);
SWFAddress.setTitle(seccion);
}
stop();
</code>
Os posteo el codigo y si podeis me ayudais.
muchas gracias por vuestro tiempo
almostdesign
Muchas gracias, a ver si en un par de días acabo esto y lo posteo para que le echeis un ojo.
Saludos!!
tpmmds
Hola:
Sí, creo que es perfecto. SwfAdress espera que le pases una cadena de texto, que puedes formar con las secciones/subsecciones de tu aplicación y después procesas esta cadena para averiguar en qué subsección está el usuario, y esto puede ser tan complejo como quieras.
Por otro lado, si estás utilizando un patrón modelo/ vista/ controlador, la historia se simplifica bastante, ya que te podrías crear un "estado" (algo similar al History Manager de Flex), asignarle un nombre ùnico, que será el que se pase a SwfAdress, y el que recuperemos más tarde. Cada vez que actualices la vista, o que consideres que se ha producido un estado nuevo (no es plan considerar un estado que el usuario arrastre un scroll :-) ) pasas SWFAddress.setValue(estadoActual); y cuando se produzca el evento CHANGE, en su método controlador actualizas la vista con el nombre del estado que recuperas en event.value
Un saludo.
almostdesign
Ese ejemplo, moviendose por el timeline gotoAndStop(frame) es el único que he encontrado por Internet.
El problema es que yo estoy haciendo algo más complejo, donde se cargan videos mediante una estructura parecida a la de la web de fotografía que puse al principio. Cada video tiene un id, pero me interesa que en la url se muestre algo más representativo (el título).
Una solución que se me ha ocurrido es asignarle una url del tipo www.blabla.com/#/3/titulodelvideo, tengo el id para poder capturarlo y tengo el titulo para que la gente lo vea.
tpmmds
Como dices, utilizas setValuel en este momento para informar a SwfAdress que estamos en esta sección, y en la url del navegador aparecerá la página donde estamos + "Producto".
Al utilizar setValue, se me dispara el evento onChange. Debido a esto el código para cambiar de vídeo lo he metido dentro de onChange, y en los botones del menú solo cambio la url (setValue).
tpmmds
Hola:
Vale, ya me he tomado el café ;-)
Imaginemos que has hecho la típica página con los apartados "Quienes Somos", "Producto", etc. y cada apartado está en el timeline con una etiqueta "Quienes somos", "Producto"... Cuando el usuario pulsa un botón y pasa a "Producto", por ejemplo, lo que se suele hacer es un gotoAndPlay("Producto"). Como dices, utilizas setValuel en este momento para informar a SwfAdress que estamos en esta sección, y en la url del navegador aparecerá la página donde estamos + "Producto". Cuando el usuario navega y pulsa los botones del historial, se produce el evento CHANGE, informando a nuestra aplicación que ha vuelto a "Producto. Simplemente hacemos un gotoAndPlay(event.value) en el método controlador de eventos que hayamos definido para CHANGE y listo, ya que event.value tiene el valor "Producto", que es nuestra etiqueta.
Un saludo.
P.D.: Aquí tienes un enlace de un ejemplillo, está hecho en Flex (nada de lo que he comentado arriba) y es muuuuuy básico, no busques programación extrema o algo así en él:
http://blog.coconnut.com/source/jel/SwfAddressMenu/index.html
Para ver el código: botón derecho "View source"
ventdaval
¿Y por que no haces que el ID sea el titulo representativo?
almostdesign
Vaya, creo que me he explicado fatal. No me refería a ningún error en esa página.
Voy a ver si lo puedo hacer mejor.
Según creo, la metodología de SWFAddress es esta:
-Cuando quiero cambiar de sección cambio el valor de la url con setValue()
-Entonces se dispara el evento SWFAddress.onChange
-Con el codigo que hemos escrito dentro del onchange, se cambia la sección
Entonces, si ponemos la dirección de una foto como, por ejemplo, esta:
-Utilizamos getValue() para capturar la url, y mediante ella cargamos la correspondiente sección.
Mi problema es que, a menudo, las secciones las identificamos internamente con un ID (un número), pero nos interesa que en la url salga algo más representativo (un título, por ejemplo). Si con getValue obtenemos ese título ("melo_dime" en el ejemplo anterior), ¿cómo haríamos para saber a que ID se corresponde ese título de foto?
Lo único que se me ocurre es tener un array con todos los titulos e ir comprobandolos uno por uno hasta dar con el ID correcto. ¿Es esta la manera?
tpmmds
Hola:
Ah, que era un problema de la dirección que ha puesto almostDesign. No, si ya decía que no acababa de "pillar" el problema,. Con Swfaddress no hay mayor incoveniente, como dices. Una persona puede entrar perfectamente a un apartado concreto de una página hecha con Flash/Swfaddress.
Un saludo, y es que estoy un poco espeso después de comer :-) .
zigotica
no, yo creo que cada imagen tiene su url distinta usando #id, que en realidad hace una llamada a servidor para devolver un contenido. Lo que debería hacer tambien (y no hace, probablemente porque está mal programado, no por culpa de swfaddress) es comprobar al cargar la página si la url tiene un hash, y si es así devolver el contenido que indique su id. en teoria si está minimamente bien hecho son dos lineas de codigo.
tpmmds
Hola:
No sé si he entendido el problema. Si te refieres a que alguien entre, no sé, directamente a una foto porque un amigo le ha pasado un enlace a la misma, lo único que ocurre es que el primer elemento del historial es ESA FOTO, y no creo que esto "despiste" al usuario. Navegará por la aplicación Flash, y si vuelve hacia atrás, llegará a la primera foto con la que entró.
Si te refieres a cómo se recupera el historial, cada vez que el usuario pulsa sobre los botones Atrás y Adelente del historial, se produce el evento SWFAddressEvent.CHANGE, que tiene la propiedad event.value donde se almacena el valor que almacenaste con setValue.
Un saludo.