Comunidad de diseño web y desarrollo en internet online

Menu dinamico tipo galeria con XML

Citar            
MensajeEscrito el 29 Sep 2009 10:38 am
Hola!

Estoy intentando montar un menu-galeria que carga desde un xml. Quiero que muestre como una especie de pequeñas fichas que contienen varios campos de texto, una imagen y un enlace al pinchar en cada una de ellas. Ádemas que se seleccionen como si fuera una galeria fotografica con movimiento horizontal.

He conseguido que me cargen sin problema todas las fichas, pero a la hora de intentar desplazar el menu solo consigo que me trate todas las imagenes como si fueran un solo objeto, no encuentro la forma de tratarlos de forma independiente para poder hacer el carrusel de fichas.

Os pongo el codigo que he utilizado por el momento, a ver si algien me puede ayudar, Gracias a todos!!:

Clase principal:

Código ActionScript :

package{
   
   import flash.display.*;
   import flash.events.*;
   import flash.net.*;

   public class main_menu_secundario extends MovieClip{

      var menu:menudinamico = new menudinamico();
      var variacion = 0;
      var boton1:flash.display.DisplayObject;
      
      public function main_menu_secundario():void{
         addChild(menu);
         cargar_listeners();
      }
      
      public function cargar_listeners():void {
         btn_iz.addEventListener (MouseEvent.MOUSE_OVER, iz_over);
         btn_iz.addEventListener (MouseEvent.MOUSE_OUT, iz_out);
         
         btn_de.addEventListener (MouseEvent.MOUSE_OVER, de_over);
         btn_de.addEventListener (MouseEvent.MOUSE_OUT, de_out);
         
         addEventListener (Event.ENTER_FRAME, mover);
      }
      
      public function de_over (e:MouseEvent){
         variacion = 5;
      }
      public function de_out (e:MouseEvent){
         variacion = 0;
      }
      public function iz_over (e:MouseEvent){
         variacion = -5;
      }
      public function iz_out (e:MouseEvent){
         variacion = 0;
      }
      
      public function mover (e:Event){
            boton1 = getChildAt(4);
            boton1.x = boton1.x + variacion;
            if (boton1.x < 10){
               boton1.x = 713;
               }
            if (boton1.x > 713){
               boton1.x = 10;
            }
      }

   }
}


Clase para cargar el xml:

Código ActionScript :

package{
   import flash.display.*;
   import flash.events.*;
   import flash.net.*;

   public class menudinamico extends Sprite{
      public var datos:XML;
      public var loader:URLLoader = new URLLoader();
      public var loader_imagen:Loader;
      
      public function menudinamico(){
         cargarDatos();
      }
      
      public function cargarDatos():void {
         loader.addEventListener(Event.COMPLETE, cargado);
         loader.addEventListener(IOErrorEvent.IO_ERROR, error);
         loader.load(new URLRequest("datos.xml"));
      }
      
      public function error(e:IOErrorEvent):void {
         trace("error al cargar el XML: " + e);
      }
      
      public function cargado(e:Event):void {
         datos = new XML(e.target.data);
         montar();
      }
      
      public function montar():void {
         var boton:ElementoMenu;
   
         for (var i:uint = 0; i < datos.elementos.elemento.length(); i++) {            
            boton = new ElementoMenu();
            boton.ficha_titulo.text = datos.elementos.elemento[i].titulo;
            boton.ficha_txt.text = datos.elementos.elemento[i].texto;
            boton.ficha_referencia.text = datos.elementos.elemento[i].referencia;
            boton.enlace = datos.elementos.elemento[i].enlace;
            boton.y = 180;
            boton.x = i * 200;
            boton.buttonMode = true;
            boton.mouseChildren = true;
            
            boton.addEventListener(MouseEvent.CLICK, navegar);
            this.addChild(boton);
            loader_imagen = new Loader();
            loader_imagen.load(new URLRequest(datos.elementos.elemento[i].imagen));
            boton.cargar_imagen.addChild(loader_imagen);
         }
      }
      
      public function navegar(e:MouseEvent):void {
         navigateToURL(new URLRequest(e.currentTarget.enlace), "_blank");
      }
      
      
   }
}

Por El_Ente

1 de clabLevel



 

msie7
Citar            
MensajeEscrito el 30 Sep 2009 03:46 pm
te envio un codigo que a mi me funciona

primero arrastra los componentes tile list y uloader al escenario, y luego borralos para que queden en la biblioteca

en el primer frame:

Código :

//include "BotonSimple.as"
import fl.containers.UILoader;
import fl.controls.*;
import fl.events.*;
import flash.net.URLLoader;
import flash.net.URLRequest;
import fl.data.DataProvider;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.geom.Point;
// Crear el visualizador
var ui:UILoader=new UILoader();
ui.scaleContent=true;
ui.setSize(775,780);
ui.move(350,130);
addChild(ui);
//ui.x = stage.stageWidth/2 - ui.width/4;
//ui.y = stage.stageHeight/2 - ui.height/4;

//Lista de Fotos
var list:TileList=new TileList();
list.setSize(256,724);
list.move(21,156);
list.rowHeight=150;
list.columnWidth=150;
//list.direction=ScrollBarDirection.VERTICAL;
list.sourceField="ruta";
addChild(list);
//var b1:Button=new Button();
//b1.move(753.4,98.2);
//b1.setSize(80,55);
//b1.label="Giro 90º";
//addChild(b1);
//Cargar XML
var xml:XML;
var url:URLRequest = new URLRequest("../flash/docu.xml");
var loader:URLLoader=new URLLoader();
loader.load(url);
// Eventos
function Completar(event){
   var xml:XML = new XML(loader.data);
   var dp:DataProvider= new DataProvider(xml);
   list.dataProvider = dp;
}
loader.addEventListener(Event.COMPLETE, Completar);
function Alcambiar(event)
{
   ui.source=list.selectedItem.ruta;
}
list.addEventListener(Event.CHANGE, Alcambiar);



espero te sirva

Por luisca85

26 de clabLevel



 

chrome
Citar            
MensajeEscrito el 02 Oct 2009 10:14 am
Hola,

He probado el codiogo, pero creo que no se ajusta a lo que necesito...o no he sabido utilizarlo bien... de todas formas no me he explicado bien :oops: las prisas...

Queria decir:

Estoy intentando montar un menu-galeria que carga desde un xml. Quiero que muestre unas fichas que contegan tres campos de texto, una imagen y cuando pinchemos en cada ficha que tenga un enlace a otra pagina.

Las fichas se mostraran como si fuera una galeria de fotos que tenga un movimiento horizontal.

He conseguido que me cargen sin problema todas las fichas, pero a la hora de intentar animarlas solo consigo que las trate como si fueran un solo objeto, no consigo acceder al nivel ficha, para poder tratarlas de forma independiente y animarlas como yo quiera.

¿Alguna idea?

Por El_Ente

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 05 Oct 2009 10:14 pm
Creo que tengo la solución a tus problemas, este archivo jala una imagen y tiene tres campos de texto para colocarle ligas (todo un menú dinámico), y todo esto lo modificas en un xml, espero te sirva, chécalo, en realidad lo que tu pides este flash lo hace, lo que yo no he podido lograr es que en lugar de textos jale imágenes (iconos) si tu lo puedes lograr te agradecería que me digas como:
http://168.255.15.7/baja/menu_itunes.zip

Por mich elizalde

2 de clabLevel



 

msie7
Citar            
MensajeEscrito el 06 Oct 2009 11:16 am
Gracias por el código!, lo unico es que no es lo que busco...

El problema que tengo es que el cliente quiere que los textos aparezcan dentro de cada ficha, que se muevan con el carrusel. El caso de tu ejemplo las tenemos fuera, como la mayoria de los ejemplos que he visto hasta ahora... es mas ahora mismo lo tengo así a falta de poder encontrar otra solución…

Solo he encontrado un ejemplo de fotos tipo polarod que tenian como pie un campo de texto, pero no he sido capaz de entender ese codigo...y no lo he podido usar.

En cuanto a lo de agregar los iconos en vez de los campos de texto, en mi ejemplo estan integradas unas imagenes, igual te puede valer para algo...lo unico que volvemos a lo mismo, no podemos mover las fichas de forma independiente.

Yo creo que mi problema tiene que venir del orden de los elementos, puede que no este llamando bien a los campos dentro del clip que creo y por eso me los pone todos en bloque….

Por El_Ente

1 de clabLevel



 

firefox
Citar            
MensajeEscrito el 06 Oct 2009 04:45 pm
Bien, si gracias me gustaría ver el flash que estás haciendo para ver si puedo agregar mis imágenes en lugar del texto, y pues del ejemplo que te mande tu puedes subir los textos cuantos pixeles quieras, esto para lograr que el texto este sobre la imagen que coloques, de nuevo te dejo la dirección donde puedes bajar los archivos editables, suerte
http://168.255.15.7/baja/menu_itunes.zip

Por mich elizalde

2 de clabLevel



 

msie7

 

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