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

[URGE]btn next/prev en galeria-no funciona

Estas en el tema de [URGE]btn next/prev en galeria-no funciona en el foro de Flash y Actionscript en Foros del Web. Hola a todos, tengo ya montada una galería en la que se cargan tanto las thumbs como las bigs desde un xml, y al hacer ...
  #1 (permalink)  
Antiguo 17/08/2010, 13:08
Avatar de Hapki  
Fecha de Ingreso: febrero-2005
Mensajes: 263
Antigüedad: 19 años, 2 meses
Puntos: 1
[URGE]btn next/prev en galeria-no funciona

Hola a todos, tengo ya montada una galería en la que se cargan tanto las thumbs como las bigs desde un xml, y al hacer click en las correspondientes thumbs, van apareciendo sus ampliaciones.

El problema lo tengo al crear los botones de atrás y adelante, que no me carga las imágenes, y he probado mil cosas ya, y no lo consigo, a ver si me podéis echar una manita.

Os expongo las funciones que intervienen a continuación:

Función que se ocupa de la carga de las thumbs:
Código [actionscript]:
Ver original
  1. function galleryChoice(q) {
  2.    pArray = new Array();
  3.    tArray = new Array();
  4.    iArray = new Array();
  5.    my_xml = new XML();
  6.    for (var j = 0; j<curLength; j++) {
  7.       this.scroll.th_nav["thmb"+j].removeMovieClip();
  8.    }
  9.    my_xml.ignoreWhite = true;
  10.    my_xml.onLoad = function(loaded) {
  11.       if (loaded) {
  12.          gallery = this.firstChild.childNodes[q];
  13.          curLength = gallery.childNodes.length;
  14.          for (var i = 0; i<gallery.childNodes.length; i++) {
  15.             pArray.push(gallery.childNodes[i].attributes.source);
  16.             tArray.push(gallery.childNodes[i].attributes.thumb);
  17.             iArray.push(gallery.childNodes[i].attributes.title);
  18.          }
  19.       }
  20.       delay = setInterval(makeButtons, 50);
  21.    };
  22.    my_xml.load("gallery.xml");
  23. }

Función que se ocupa de la carga de las ampliaciones:

Código actionscript:
Ver original
  1. MovieClip.prototype.loadPic = function(pic) {
  2.    cur = pic;
  3.    container._alpha = 0;
  4.    this.loadMovie(pArray[pic]);
  5.    this._parent.onEnterFrame = function() {
  6.       var t = container.getBytesTotal(), l = container.getBytesLoaded();
  7.       bar._visible = 1;
  8.       per = Math.round((l/t)*100);
  9.       if (t == l && container._width>0 && container._height>0) {
  10.          var w = container._width+spacing, h = container._height+spacing;
  11.          border.resizeMe(w, h);
  12.          bar._visible = 0;
  13.          info.text = iArray[pic];
  14.          container._alpha = 0;
  15.          delete this.onEnterFrame;
  16.       } else {
  17.          bar._width = per;
  18.          info.text = per+" % loaded";
  19.       }
  20.    };
  21. };


Y aquí el code que le tengo puesto a los botones:

Código [actionscript]:
Ver original
  1. prevb.onRelease = function() {
  2.    cur--;
  3.    if (cur<0) {
  4.       container.loadPic(pArray.length-1);
  5.    } else {
  6.       container.loadPic(cur);
  7.    }
  8. };
  9. nextb.onRelease = function() {
  10.    cur++;
  11.    if (cur>pArray.length-1) {
  12.       container.loadPic(0);
  13.    } else {
  14.       container.loadPic(cur);
  15.    }
  16. };


¿En qué estoy fallando? ¿Porque no me carga las ampliaciones usando los botones?

Muchisimas gracias por adelantado.
__________________
Nada es imposible para una mente dispuesta
  #2 (permalink)  
Antiguo 17/08/2010, 19:10
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: [URGE]btn next/prev en galeria-no funciona

hola
bueno, tienes el xml en un servidor para probarlo con dicho xml?
o puedes copiar la estructura del xml para emularlo?
el código es as2 verdad? quisiera saber si las dos primeros códigos que copiaste
van en el stage o estan dentro de un mc
nos comentas
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #3 (permalink)  
Antiguo 18/08/2010, 01:48
Avatar de Hapki  
Fecha de Ingreso: febrero-2005
Mensajes: 263
Antigüedad: 19 años, 2 meses
Puntos: 1
Respuesta: [URGE]btn next/prev en galeria-no funciona

Gracias por responderme... el code es as2 sí, y todo el code va en el stage, no hay ningún code más en ningún mc ni nada, éste es al completo, por si te sirve:

Código actionscript:
Ver original
  1. var tnNr;
  2. spacing = 10;
  3. container._alpha = 0;
  4. var curLength;
  5.  
  6. MovieClip.prototype.loadPic = function(pic, id) {
  7.    info.text = "";
  8.    this._alpha = 0;
  9.    this.loadMovie(pic);
  10.    temp = this._parent.createEmptyMovieClip("temp2", 998);
  11.    temp.onEnterFrame = function() {
  12.       var t = container.getBytesTotal(), l = container.getBytesLoaded();
  13.       if (Math.round(l/t) == 1 && container._width != 0 && container._height != 0) {
  14.          var w = container._width+spacing, h = container._height+spacing;
  15.          border.resizeMe(w, h, id);
  16.          delete this.onEnterFrame;
  17.       }
  18.    };
  19. };
  20. MovieClip.prototype.resizeMe = function(w, h, id) {
  21.    var speed = 3;
  22.    container._alpha = 0;
  23.    this.onEnterFrame = function() {
  24.       this._width += (w-this._width)/speed;
  25.       this._height += (h-this._height)/speed;
  26.       if (Math.abs(this._width-w)<1 && Math.abs(this._height-h)<1) {
  27.          this._width = w;
  28.          this._height = h;
  29.          container._x = this._x-this._width/2+spacing/2;
  30.          container._y = this._y-this._height/2+spacing/2;
  31.          info._y = Math.round(this._y+this._height/2+spacing/2);
  32.          container._alpha += 5;
  33.          if (container._alpha>90) {
  34.             info.text = id;
  35.             container._alpha = 100;
  36.             delete this.onEnterFrame;
  37.          }
  38.       }
  39.    };
  40. };
  41. //carga las thumbs
  42. function galleryChoice(q) {
  43.    pArray = new Array();
  44.    tArray = new Array();
  45.    iArray = new Array();
  46.    my_xml = new XML();
  47.    for (var j = 0; j<curLength; j++) {
  48.       this.scroll.th_nav["thmb"+j].removeMovieClip();
  49.    }
  50.    my_xml.ignoreWhite = true;
  51.    my_xml.onLoad = function(loaded) {
  52.       if (loaded) {
  53.          gallery = this.firstChild.childNodes[q];
  54.          curLength = gallery.childNodes.length;
  55.          for (var i = 0; i<gallery.childNodes.length; i++) {
  56.             pArray.push(gallery.childNodes[i].attributes.source);
  57.             tArray.push(gallery.childNodes[i].attributes.thumb);
  58.             iArray.push(gallery.childNodes[i].attributes.title);
  59.          }
  60.       }
  61.       delay = setInterval(makeButtons, 50);
  62.    };
  63.    my_xml.load("gallery.xml");
  64. }
  65. //columnas de las thumbs
  66. function makeButtons() {
  67.    tnNr = 0;
  68.    clearInterval(delay);
  69.    for (var i = 0; i<tArray.length; i++) {
  70.       var thb = scroll.th_nav.thmb.duplicateMovieClip("thmb"+i, 1000+i);
  71.       thb.id = i;
  72.       thb._x = i%2*100;
  73.       thb._y = Math.floor(i/2)*100;
  74.    }
  75.    loadButtons();
  76. }
  77. //carga thumbs como botones
  78. function loadButtons() {
  79.    var tbox = scroll.th_nav["thmb"+tnNr].box;
  80.    tbox.loadMovie(tArray[tnNr]);
  81.    temp = this.createEmptyMovieClip("tmp"+tnNr, 999);
  82.    temp.onEnterFrame = function() {
  83.       bt = tbox.getBytesTotal();
  84.       bl = tbox.getBytesLoaded();
  85.       if (bt == bl && bt>4) {
  86.          nextButton();
  87.          delete this.onEnterFrame;
  88.       }
  89.    };
  90. }
  91. //Hacen que vaya cargando todas las thumbs de una en una, si no solo se carga la primera
  92. function nextButton() {
  93.    if (tnNr<tArray.length-1) {
  94.       tnNr++;
  95.       loadButtons();
  96.    } else {
  97.       activateButtons();
  98.    }
  99. }
  100. //Activa la funcion de boton a las thumbs
  101. function activateButtons() {
  102.    mainButtons();
  103.    for (var i = 0; i<pArray.length; i++) {
  104.       var but = scroll.th_nav["thmb"+i];
  105.       but.id = i;
  106.       but.onRelease = function() {
  107.          container.loadPic(pArray[this.id], iArray[this.id]);
  108.          disButtons2(this.id);
  109.       };
  110.    }
  111.    container.loadPic(pArray[0], iArray[0]);
  112.    disButtons2(0);
  113. }
  114. //efecto de alpha en las thumbs al estar seleccionadas
  115. function disButtons2(d) {
  116.    for (var i = 0; i<tArray.length; i++) {
  117.       if (i != d) {
  118.          this.scroll.th_nav["thmb"+i].enabled = 1;
  119.          this.scroll.th_nav["thmb"+i].box._alpha = 100;
  120.       } else {
  121.          this.scroll.th_nav["thmb"+i].enabled = 0;
  122.          this.scroll.th_nav["thmb"+i].box._alpha = 50;
  123.       }
  124.    }
  125. }
  126.  
  127. galleryChoice(0);
  128.  
  129. //Los DICHOSOS BOTONES
  130. prevb.onRelease = function() {
  131.    cur--;
  132.    if (cur<0) {
  133.       container.loadPic(pArray.length-1);
  134.    } else {
  135.       container.loadPic(cur);
  136.    }
  137. };
  138. nextb.onRelease = function() {
  139.    cur++;
  140.    if (cur>pArray.length-1) {
  141.       container.loadPic(0);
  142.    } else {
  143.       container.loadPic(cur);
  144.    }
  145. };

El XML tiene la siguiente estructura y datos:
Código XML:
Ver original
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <menu>
  3.         <gallery name="Galeria 1">
  4.                 <image source="pics/pic1.jpg" thumb="pics/th1.jpg" title="Foto Nº 1"/>
  5.                 <image source="pics/pic2.jpg" thumb="pics/th2.jpg" title="Foto Nº 2"/>
  6.                 <image source="pics/pic3.jpg" thumb="pics/th3.jpg" title="Foto Nº 3"/>
  7.                  </gallery>
  8. </menu>

Al hacer click en el boton next o prev, me sale en el panel de salida el siguiente error:

Cita:
Error al abrir la URL 'file:///Macintosh%20HD/Users/imac/Desktop/MIS%20DOCUMENTOS/web/1'
Espero que con toda la información puedas ayudarme... gracias.
__________________
Nada es imposible para una mente dispuesta
  #4 (permalink)  
Antiguo 18/08/2010, 02:09
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: [URGE]btn next/prev en galeria-no funciona

bueno, ese entonces sería error de ruta, te pregunto algo,
el xml esta localmente al mismo nivel del swf?
otra pregunta, esta montado todo en un servidor?
mientras reviso lo que me pasaste
saludos

edito: bueno, no tengo la estructura de tu fla,
pero puse los botones de anterior y siguiente,
y puse el código que indicaste, y al dar clic en los
botones no me muestra el error que te muestra a ti,
ahora, revisando el valor de cur, da undefined (es decir, no esta definido),
así que intenta agregar la variable de este modo

Código actionscript:
Ver original
  1. var cur:Number = 0;

esto lo puse luego de var tnNr, la cual tienes dimensionada,
pero no le defines que tipo de dato es, te recomiendo que para todas
tus variables hagas eso (definas el tipo de dato[Number, String, Array, etc])

revisa eso
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com

Última edición por mortiprogramador; 18/08/2010 a las 02:21 Razón: add_comment()
  #5 (permalink)  
Antiguo 18/08/2010, 07:27
Avatar de Hapki  
Fecha de Ingreso: febrero-2005
Mensajes: 263
Antigüedad: 19 años, 2 meses
Puntos: 1
Respuesta: [URGE]btn next/prev en galeria-no funciona

La ruta del xml está en el mismo nivel q el swf. Lo he probado tanto en local como en servidor, y nada. También he puesto lo de la variable q me dices, pero sigue igual.

Te he pasado por privado el archivo .fla por si quieres verlo y por si te resulta más fácil verlo que yo diciéndotelo.

Espero tu respuesta, gracias.
__________________
Nada es imposible para una mente dispuesta
  #6 (permalink)  
Antiguo 18/08/2010, 18:44
Avatar de mortiprogramador
Colaborador
 
Fecha de Ingreso: septiembre-2009
Ubicación: mortuoria
Mensajes: 3.805
Antigüedad: 14 años, 7 meses
Puntos: 214
Respuesta: [URGE]btn next/prev en galeria-no funciona

ya revise el archivo, te respondi por privado, te queda de tarea revisar las observaciones y si alguna te sirve actualiza el tema
saludos
__________________
"Si consigues ser algo más que un hombre, si te entregas a un ideal, si nadie puede detenerte, te conviertes en algo muy diferente."
Visita piggypon.com
  #7 (permalink)  
Antiguo 19/08/2010, 15:32
Avatar de Hapki  
Fecha de Ingreso: febrero-2005
Mensajes: 263
Antigüedad: 19 años, 2 meses
Puntos: 1
Respuesta: [URGE]btn next/prev en galeria-no funciona

Solucionado! Gracias mortiprogramador! :)

Al final, tenía que inicializar la variable cur al inicio del as, y luego el as de los botones quedó así:

Código actionscript:
Ver original
  1. prevb.onRelease = function() {
  2.     cur--;
  3.    if (cur<0) {  
  4.       cur = pArray.length-1
  5.       container.loadPic("pics/pic"+cur+".jpg");  
  6.    } else {
  7.         container.loadPic(pArray[cur]);
  8.     }
  9. };
  10.  
  11. nextb.onRelease = function() {  
  12.    cur++;  
  13.    if (cur>pArray.length-1) {  
  14.       cur = 0;
  15.       container.loadPic("pics/pic"+cur+".jpg");  
  16.    }  else {
  17.         container.loadPic(pArray[cur]);
  18.     }
  19. };
__________________
Nada es imposible para una mente dispuesta

Etiquetas: Ninguno
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 21:42.