Comunidad de diseño web y desarrollo en internet online

Asignar OnPress en Clip creado a partir de datos XML

Citar            
MensajeEscrito el 10 Oct 2009 04:09 pm
Hola, a ver si me pueden echar una mano. Tengo el siguiente codigo que coge los datos de un XML para mostrar imagenes en columnas. Los datos los carga bien pero tengo 2 problemas:

1. No me funciona el OnPress en los clips creados. Dicho OnPress deberia enviar-te a una url que esta en el XML, también lo pongo.
2. El codigo sólo se ejecuta bien en FlashPlayer 6. Creo que es debido a que en el codigo no se definen las variables (Ej. var ancho:Number;) pero lo hice y tampoco me iba para FlashPlayer 10.

Gracias.

Codigo ActionScript

Código :


// -- posición donde se cargará la primera imagen
x = 0;
y = 0;
// -- ancho y alto de la imagen más 5 pixeles de espacio
ancho = 85;
alto = 92;
// -- numero de columnas
num_columnas = 4;
// -- creo un nuevo objeto XML
miXML = new XML();
// -- ignorar espacios 
miXML.ignoreWhite = true;
// -- proceso si la carga tuvo éxito
miXML.onLoad = function(succes) {
   if (succes) {
      // -- por cada nodo hijo del nodo principal...
      for (var i = 0; i<this.firstChild.childNodes.length; i++) {
         // -- delaro una variable que recoje el atributo del nodo (nombre de la imagen)
         galeria = this.firstChild.childNodes[i].attributes.id;
         // -- delaro una variable que recoje otro atributo del nodo (enlace url)
         link = this.firstChild.childNodes[i].attributes.enlace;
         // -- creo un clip de película vacio 
         createEmptyMovieClip("diapo"+i, i+100);
         // --  cargo la imáen el clip vacio
         item = _root["diapo"+i];
         item.loadMovie(galeria);
         // -- indico posición x - y
         item._x = x;
         item._y = y;
         // -- indico función boton
         this["diapo"+i].onPress = function ()  {
         getURL (link);
         }
         // -- incremento el valor de x para la siguiente imágen
         x += ancho;
         // -- incremento en 1 el número de columnas
         trace ("diapo"+i);
         trace (columna);
         trace (link);
         columna += 1;
         // -- ruptura de control, control de número de columnas
         if (columna == num_columnas) {
            columna = 0;
            x -= (ancho*num_columnas);
            y += alto;
         }
      }
   }
};

// -- cargar XML
//miXML.load("imagenes.xml");

miXML.load("productos.xml");


XML

Código XML :

<?xml version="1.0" encoding="iso-8859-1"?>
<imagenes>
<imagen id="imagenes-productos/1.jpg" enlace="1.html"/>
<imagen id="imagenes-productos/2.jpg" enlace="2.html"/>
<imagen id="imagenes-productos/3.jpg" enlace="3.html"/>
<imagen id="imagenes-productos/4.jpg" enlace="4.html"/>
<imagen id="imagenes-productos/5.jpg" enlace="5.html"/>
<imagen id="imagenes-productos/6.jpg" enlace="6.html"/>
<imagen id="imagenes-productos/7.jpg" enlace="7.html"/>
<imagen id="imagenes-productos/8.jpg" enlace="8.html"/>
<imagen id="imagenes-productos/9.jpg" enlace="9.html"/>
</imagenes>

Por fviaplana

32 de clabLevel



 

msie8
Citar            
MensajeEscrito el 10 Oct 2009 04:57 pm
Hola, econtre una solución para el punto 1 en el mismo ejemplo. En el XML la denominacion de 'enlace' se sustituye por 'url'. A ver si alguien me puede decir algo del punto 2. Gracias.

Código ActionScript :

// -- posición donde se cargará la primera imagen
x = 3;
y = 3;
// -- ancho y alto de la imagen más 5 pixeles de espacio
ancho = 85;
alto = 92;
// -- numero de columnas
num_columnas = 3;
// -- creo un nuevo objeto XML
miXML = new XML();
// -- ignorar espacios 
miXML.ignoreWhite = true;
// -- proceso si la carga tuvo éxito
miXML.onLoad = function(succes) {
   if (succes) {
      // -- por cada nodo hijo del nodo principal...
      for (var i = 0; i < this.firstChild.childNodes.length; i++) {
         // -- delaro una variable que recoje el atributo del nodo (nombre de la imagen)
         thumb = this.firstChild.childNodes[i].attributes.id;
         // -- creo un clip de película vacio 
         holder_mc = createEmptyMovieClip("holder_mc" + i, i + 100);
         // -- creo un clip de película vacio 
         item = holder_mc.createEmptyMovieClip("diapo" + i, i + 100);
         // --  cargo la imágen el clip vacio
         item.loadMovie(thumb);
         // -- indico posición x - y
         holder_mc._x = x;
         holder_mc._y = y;
         // -- se crea una variable que contiene la url correspondiente
         holder_mc.url = this.firstChild.childNodes[i].attributes.url;
         // -- abrir url al hacer clic
         holder_mc.onRelease = function() {
            getURL(this.url);
         };
         // -- incremento el valor de x para la siguiente imágen
         x += ancho;
         // -- incremento en 1 el número de columnas
         columna += 1;
         // -- ruptura de control, control de número de columnas
         if (columna == num_columnas) {
            columna = 0;
            x -= (ancho * num_columnas);
            y += alto;
         }
      }
   }
};


Código XML :

<?xml version="1.0" encoding="iso-8859-1"?>
<imagenes>
<imagen id="imagenes-productos/1.jpg" url="http//www.google.com"/>
<imagen id="imagenes-productos/2.jpg" url="http//www.yahoo.com"/>
</imagenes>

Por fviaplana

32 de clabLevel



 

msie8

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.