Comunidad de diseño web y desarrollo en internet online

rotación datos con XML

Citar            
MensajeEscrito el 10 Dic 2009 08:12 pm
hola a todos tengo el siguiente código, lo que hace es leer imágenes y datos desde un XML y ponerlos a rotar según el contador en el que esté, el script rota perfectamente pero.... cuando presiono algunos de los botones y cambio el valor de contador de fotos este se enloquece y no sigue el consecutivo en el que va y si quito la funcion que lo hace rotar funciona; ya me ha quitado todo el día esto.... alguna idea dónde está el error???

Código :

import mx.transitions.Tween;
import mx.transitions.easing.*;
var raiz:MovieClip=this;
Stage.showMenu=false;
var itemsBotones:Array=["Destino1","Destino2","Destino3"];
var cargadorFoto:MovieClipLoader= new MovieClipLoader();
var datosRecibido:Array;
var numFotos:Number;
var cadaFoto:Array;
var contadorFotos:Number=0;
var rotacionFotos:Number;
var tiempo:Number=.8;
preload_mc._xscale=0;

brillo_mc.stop();
var listener:Object= new Object();
var myXml:XML= new XML();
myXml.ignoreWhite=true;
myXml.load("promocionesEs.xml");
myXml.onLoad=function  (ok:Boolean) {
   if(ok){
      datosRecibido = myXml.firstChild.childNodes;
      mostrar (0,"Panamá");
      contBotones_mc.botonera0.arrow_mc._visible=true;
      contBotones_mc.botonera0.colorBg_mc._visible=true;
      contBotones_mc.botonera0.enabled=false;
      contBotones_mc.botonera0.arrow_mc._visible=true;
   }
   else{
      trace("no cargo");
   }
}

function mostrar (idBoton:Number):Void {
   clearInterval(rotacionFotos);
   trace("VA EN: "+idBoton);
   var mover:Tween= new Tween(precio_mc,"_x",Back.easeOut,precio_mc._x,440.15,tiempo,true);
      mover = new Tween(dir_mc,"_y",Back.easeOut,dir_mc._y,201.9,tiempo,true);
   for (var a in contBotones_mc) {
      contBotones_mc[a].enabled=true;
      contBotones_mc[a].arrow_mc._visible=false;
      contBotones_mc[a].colorBg_mc._visible=false;
   }
   
   contBotones_mc["botonera"+contadorFotos].enabled=false;
   contBotones_mc["botonera"+contadorFotos].arrow_mc._visible=true;
   contBotones_mc["botonera"+contadorFotos].colorBg_mc._visible=true;

   var destinos:MovieClip=contenedorFotos_mc.attachMovie("cargaFoto","cargaFoto_mc",contenedorFotos_mc.getNextHighestDepth());

   listener.onLoadProgress=function  (target:MovieClip, bytesLoaded:Number, bytesTotal:Number) {
      var pct:Number=Math.round(bytesLoaded*100/bytesTotal);
      preload_mc._visible=true;
      preload_mc._xscale = pct;
   }
   cargadorFoto.addListener(listener)
   listener.onLoadComplete=function (event) {
      preload_mc._visible = false;
      var aparece:Tween = new Tween(contenedorFotos_mc.cargaFoto_mc,"_alpha",Back.easeOut,0,100,2,true);
         aparece = new Tween(contenedorFotos_mc.cargaFoto_mc,"_x",Strong.easeOut,-400,0,tiempo+1,true);
         aparece = new Tween(contenedorFotos_mc.cargaFoto_mc,"_y",Strong.easeOut,-400,0,tiempo+1,true);
         aparece = new Tween(contenedorFotos_mc.cargaFoto_mc,"_xscale",Strong.easeOut,200,100,tiempo,true);
         aparece = new Tween(contenedorFotos_mc.cargaFoto_mc,"_yscale",Strong.easeOut,200,100,tiempo,true);
         aparece.onMotionFinished=function  () {
            brillo_mc.play();
            rotacionFotos=setInterval(raiz,"rotar",4000);
         }
   }

   cargadorFoto.loadClip(myXml.firstChild.childNodes[idBoton].attributes.rutaFoto,destinos.contFotos_mc);
   precio_mc.precio_txt.text=myXml.firstChild.childNodes[idBoton].attributes.precio;
   destino_txt.text=myXml.firstChild.childNodes[idBoton].attributes.destino;
   dir_mc.onPress=function  () {
      getURL(myXml.firstChild.childNodes[idBoton].attributes.dir);
   }
}

function rotar (id:Number):Void {
   if(id!=undefined){
      contadorFotos=id;
      mostrar (contadorFotos);
   }
   else{
      for (var elimina in contenedorFotos_mc) {
         var sale:Tween = new Tween(contenedorFotos_mc[elimina],"_alpha",Strong.easeOut,100,0,1,true)
            sale.onMotionFinished=function  () {
               contenedorFotos_mc[elimina].removeMovieClip();
               contadorFotos++;
               if(contadorFotos==3){contadorFotos=0};
               mostrar (contadorFotos);
            }
      }
   }
}

function crearBotonera () {
   var posX:Number=32;
   var posY:Number=0;
   for (var b:Number=0;b<itemsBotones.length;b++) {
      var botonera:MovieClip=contBotones_mc.attachMovie("botonera","botonera"+b,contBotones_mc.getNextHighestDepth(),{_x:posX,_y:posY,labeBoton:itemsBotones[b],idBoton:b});
         botonera.arrow_mc._visible=false;
         botonera.colorBg_mc._visible=false;
         botonera.datoBoton_txt.text=botonera.labeBoton;
         posX+=botonera._width+5;
         
         var moverBotones:Tween= new Tween(botonera,"_x",Back.easeOut,600,botonera._x,tiempo+b/2,true)
         botonera.onPress=function  () {
               
            brillo_mc.gotoAndStop(1);
            for (var e in contBotones_mc) {
               contBotones_mc[e].enabled=true;
               contBotones_mc[e].arrow_mc._visible=false;
               contBotones_mc[e].colorBg_mc._visible=false;
            }
            this.arrow_mc._visible=true;
            this.colorBg_mc._visible=true;
            this.enabled=false;
            clearInterval(rotacionFotos);
            rotar (this.idBoton);
         }
         
         botonera.onRollOver=function  () {
            clearInterval(rotacionFotos);
         }
         botonera.onRollOut=function  () {
            rotacionFotos=setInterval(raiz,"rotar",10000);
         }
   }

}
   
crearBotonera();




Gracias :D

Por edisontabo

25 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 10 Dic 2009 08:46 pm
Algo para ilustrar lo que quiero hacer con este script
http://www.agilecarousel.com/examples/full_example

Por edisontabo

25 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 18 Dic 2009 07:24 pm
Hola después de varias horas pegado mirando cual pudo ser el problema pude encontarlo, era que el contador tenía que incrementarlo antes de llamar la función que me borrara y me hacia rotar el siguiente item
Este es el código completo por si alguno lo quiere utilizar con algunas correcciones para su mejor funcionamiento:

Código :

import mx.transitions.Tween;
import mx.transitions.easing.*;
var raiz:MovieClip=this;
Stage.showMenu=false;
var itemsBotones:Array=["BTN1","BTN2","BTN3"];
var cargadorFoto:MovieClipLoader= new MovieClipLoader();
var datosRecibido:Array;
var numFotos:Number;
var cadaFoto:Array;
var contadorFotos:Number=0;
var rotacionFotos:Number;
var tiempo:Number=1.5;
preload_mc._xscale=0;

brillo_mc.stop();
var listener:Object= new Object();
var myXml:XML= new XML();
myXml.ignoreWhite=true;
myXml.load("promocionesEs.xml");
myXml.onLoad=function  (ok:Boolean) {
   if(ok){
      datosRecibido = myXml.firstChild.childNodes;
      mostrar (0,"Panamá");
      contBotones_mc.botonera0.arrow_mc._visible=true;
      contBotones_mc.botonera0.colorBg_mc._visible=true;
      contBotones_mc.botonera0.enabled=false;
      contBotones_mc.botonera0.arrow_mc._visible=true;
      var mover:Tween= new Tween(precio_mc,"_x",Back.easeOut,precio_mc._x,440.15,tiempo,true);
         mover = new Tween(dir_mc,"_y",Back.easeOut,dir_mc._y,201.9,tiempo,true);      
   }
   else{
      trace("no cargó");
   }
}

function crearBotonera () {
   var posX:Number=32;
   var posY:Number=0;
   for (var b:Number=0;b<itemsBotones.length;b++) {
      var botonera:MovieClip=contBotones_mc.attachMovie("botonera","botonera"+b,contBotones_mc.getNextHighestDepth(),{_x:posX,_y:posY,labeBoton:itemsBotones[b],idBoton:b});
         botonera.arrow_mc._visible=false;
         botonera.colorBg_mc._visible=false;
         botonera.datoBoton_txt.text=botonera.labeBoton;
         posX+=botonera._width+5;
         var moverBotones:Tween= new Tween(botonera,"_x",Back.easeOut,600,botonera._x,tiempo+b/2,true)
         botonera.onPress=function  () {
            for (var e in contBotones_mc) {
               contBotones_mc[e].enabled=false;
               contBotones_mc[e].arrow_mc._visible=contBotones_mc[e].colorBg_mc._visible=false;
            }
            contadorFotos=this.idBoton;            
            brillo_mc.gotoAndStop(1);
            eliminaPromociones(contadorFotos);
         }
   }
}

function eliminaPromociones (id:Number):Void {
   for (var elimina in contenedorFotos_mc) {
      var desaparece:Tween = new Tween(contenedorFotos_mc[elimina],"_y",Back.easeInOut,0,500,tiempo,true)
      desaparece.onMotionFinished=function  () {
         contenedorFotos_mc[elimina].removeMovieClip();
         if(contadorFotos==3){contadorFotos=0;}
         mostrar (contadorFotos);
      }
   }
}

function mostrar (idBoton:Number):Void {
   clearInterval(rotacionFotos);
   for (var a in contBotones_mc) {
      contBotones_mc[a].enabled=true;
      contBotones_mc[a].arrow_mc._visible=false;
      contBotones_mc[a].colorBg_mc._visible=false;
      contBotones_mc["botonera"+contadorFotos].enabled=false;
      contBotones_mc["botonera"+contadorFotos].arrow_mc._visible=true;
      contBotones_mc["botonera"+contadorFotos].colorBg_mc._visible=true;
   }

   var destinos:MovieClip=contenedorFotos_mc.attachMovie("cargaFoto","cargaFoto_mc",contenedorFotos_mc.getNextHighestDepth());
   cargadorFoto.loadClip(myXml.firstChild.childNodes[idBoton].attributes.rutaFoto,destinos.contFotos_mc);
   precio_mc.precio_txt.text=myXml.firstChild.childNodes[idBoton].attributes.precio;
   destino_txt.text=myXml.firstChild.childNodes[idBoton].attributes.destino;
   dir_mc.onPress=function  () {
      getURL(myXml.firstChild.childNodes[idBoton].attributes.dir);
   }
   
   
   listener.onLoadProgress=function  (target:MovieClip, bytesLoaded:Number, bytesTotal:Number) {
      var pct:Number=Math.round(bytesLoaded*100/bytesTotal);
      preload_mc._visible=true;
      preload_mc._xscale = pct;
   }
   
   cargadorFoto.addListener(listener);
   listener.onLoadComplete=function (event) {
      preload_mc._visible = false;
      var aparece:Tween = new Tween(contenedorFotos_mc.cargaFoto_mc,"_x",Strong.easeOut,-400,0,tiempo,true);
         aparece = new Tween(contenedorFotos_mc.cargaFoto_mc,"_y",Strong.easeOut,-400,0,tiempo,true);
         aparece = new Tween(contenedorFotos_mc.cargaFoto_mc,"_xscale",Strong.easeOut,200,100,tiempo,true);
         aparece = new Tween(contenedorFotos_mc.cargaFoto_mc,"_yscale",Strong.easeOut,200,100,tiempo,true);
         aparece.onMotionFinished=function  () {
            brillo_mc.play();
            rotacionFotos=setInterval(raiz,"eliminaPromociones",10000);
            contadorFotos++;
         }
   }
}

crearBotonera();


Si mejoras en el código serán bien recibidas :D

Por edisontabo

25 de clabLevel



Genero:Masculino  

firefox

 

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