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

imágenes dinámicas + links en ellas = cómo?

Estas en el tema de imágenes dinámicas + links en ellas = cómo? en el foro de Flash y Actionscript en Foros del Web. Muy buenas tardes a todos :) Les cuento mi problema, es un poco difícil de explicar: hice un flash que hace una consulta a una ...
  #1 (permalink)  
Antiguo 06/01/2009, 10:33
Avatar de unreal4u  
Fecha de Ingreso: octubre-2008
Mensajes: 72
Antigüedad: 9 años, 1 mes
Puntos: 10
imágenes dinámicas + links en ellas = cómo?

Muy buenas tardes a todos :)

Les cuento mi problema, es un poco difícil de explicar:
hice un flash que hace una consulta a una base de datos mediante PHP. Se genera el XML y el flash carga las imágenes, texto y links sin problema. (Gracias a recomendaciones de este mismo foro :D)

Sin embargo, también quiero que al hacer click en la imagen me lleve al mismo link, de esta manera para cada imagen:

Código:
http://img154.imageshack.us/img154/1108/flash002rh3.png
(Disculpen no poner la imagen directa, pero no tengo los 30 mensajes todavía xD)

Ahora bien, lo que había pensado es lo siguiente:
Creo un arreglo y dentro de ese arreglo meto los links, de manera que cuando hago click, se vaya también mediante getURL a ese link, tengo esto:

AS2.0:
Código:
var li = new Array();
for (var i = 0; i<this.cant; i++) {
// NOTA: "cant" me lo genera el XML, si en un futuro son más o menos productos a mostrarse, no habrá que hacer mayores modificaciones
  this.ref["nombre"+i].htmlText = "<b><a href=\""+this["link"+i]+"\" target=\"_self\">"+this["nombre"+i]+"</a></b>";
  this.ref["imagen"+i].texto_txt.htmlText = "<b><a href=\""+this["link"+i]+"\">"+this["nombre"+i]+"</a></b>";
  this.ref["imagen"+i].texto_txt.autoSize = true;
  this.ref["imagen"+i].loader_mc.loadMovie(this["foto"+i]);
// NOTA: Hasta aquí funciona todo perfecto, de aquí hacia abajo es donde no funciona como quiero... 
  li[i] = this["link"+i];
  this.ref["imagen"+i].link_mc.onRelease = function() {
    getURL(li[i], "_self");
    //trace("li[0] adentro de la función: "+li[1]);
  };
}
Ese código hace que los textos sean linkeables, pero lamentablemente, la función onRelease se activa recién cuando uno hace click, no cuando está cargando las imágenes, lo cual lleva a que li[i] sea undefined al momento de hacer click :(

Alguna sugerencia o idea para llevar a cabo lo que quiero hacer? Alguna forma tendrá que existir, youtube lo hace :P
He buscado por todos lados (y con diferentes keywords) por sugerencias, pero como soy bien nuevo en ActionScript 2.0, todavía no entiendo bien a qué se puede referir cada cosa...

Saludos y gracias por adelantado :)
  #2 (permalink)  
Antiguo 07/01/2009, 09:11
Avatar de unreal4u  
Fecha de Ingreso: octubre-2008
Mensajes: 72
Antigüedad: 9 años, 1 mes
Puntos: 10
Respuesta: imágenes dinámicas + links en ellas = cómo?

upale para que no desaparezca :P
(Si no están permitidos los ups, infracciónenme no más :P)

Y si faltan datos, por favor indíquenmelo para agregarlos :)
  #3 (permalink)  
Antiguo 07/01/2009, 23:37
 
Fecha de Ingreso: julio-2004
Mensajes: 15
Antigüedad: 13 años, 4 meses
Puntos: 4
Respuesta: imágenes dinámicas + links en ellas = cómo?

Una sugerencia es que almacenes las variables dentro del objeto, de esta manera las podrás llamar cuando las necesites y no dependerás del valor de i.

al momento de generar los objetos (ejemplo ):

ref.liga = ligasXML[ i ];

ref.onRelease = function(){
this.getURL( this.liga );
}

En mi sitio hay un ejercicio con XML, el cual es convertido en un Array para trabajar más fácilmente. Aún cuando no es exactamente lo que estás utilizando, puede servir de ejemplo.

http://www.sargentoweb.com/flash/?doc=37

Verás que estoy almacenando el valor indice en cada uno de los objetos en el momento mismo de su generación. De esta forma se queda almacenado el valor que le corresponde y no dependerás del valor del índice del for().

Espero el documento te sea de ayuda.

Saludos


Sargento
www.sargentoweb.com
  #4 (permalink)  
Antiguo 08/01/2009, 13:51
Avatar de unreal4u  
Fecha de Ingreso: octubre-2008
Mensajes: 72
Antigüedad: 9 años, 1 mes
Puntos: 10
Respuesta: imágenes dinámicas + links en ellas = cómo?

Muchísimas gracias, hoy en la noche lo veo y posteo...

Algo muy parecido quería hacer yo, pero creo que no me salió ya que me falta experiencia en AS2... Pero como digo, hoy en la noche veo qué puedo hacer, gracias por la página, es algo muuuuy parecido a lo que tengo (la verdad es que no cargo un XML, sino un texto personalizado que pesa menos, así que el ejemplo me viene de perrillas :D )

Saludos y gracias por la respuesta !!
  #5 (permalink)  
Antiguo 09/01/2009, 01:18
Avatar de unreal4u  
Fecha de Ingreso: octubre-2008
Mensajes: 72
Antigüedad: 9 años, 1 mes
Puntos: 10
Respuesta: imágenes dinámicas + links en ellas = cómo?

aaaaaaaaaaaaaaaaaaaaaaaaaaaahhhhh !!!! LO HICE !!!! :D

Revisando la guía de Sargento me di cuenta de una línea que me llamó mucho la atención:
Código:
ref_b = _root.attachMovie( 'boton', 'boton' + b, prof );
Me puse a investigar para qué servía attachMovie y llegué a la siguiente página:
Código:
http://www.tallerwebmaster.com/Tutorial-Menu-Dinamico-con-XML-y-Adobe-Flash-Final-c-101.html
Así que combinando un poco el consejo de Sargento con el tutorial de arriba (que me explicó los conceptos básicos de los cuales no tenía idea), llegué a escribir el siguiente código:

Código:
for (var i = 0; i<this.cant; i++) {
  this.ref["nombre"+i].htmlText = "<b><a href=\""+this["link"+i]+"\" target=\"_self\">"+this["nombre"+i]+"</a></b>";
  this.ref["imagen"+i].texto_txt.htmlText = "<b><a href=\""+this["link"+i]+"\">"+this["nombre"+i]+"</a></b>";
  this.ref["imagen"+i].texto_txt.autoSize = true;
  this.ref["imagen"+i].loader_mc.loadMovie(this["foto"+i]);
  this.ref["imagen"+i].attachMovie("loader_mc","testing"+i,this.getNextHighestDepth());
  this.ref["imagen"+i].linkurl = this["link"+i]; 
  this.ref["imagen"+i].onRelease = function() {
    getURL(this.linkurl, "_self");
  };
}
Lo que finalmente hizo la magia :D

Ahora bien, ignoro si está 100% bien lo que hice, a medida que pruebe con todos los navegadores lo más probable es que tenga que hacer algunos ajustes, pero al menos ahora está funcionando en firefox xDD

Muchísimas gracias Sargento, si no fuera por tí no lo habría podido hacer :D

Saludos !!
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 00:51.