Comunidad de diseño web y desarrollo en internet online

Crear menu a partir de xml

Citar            
MensajeEscrito el 11 Ago 2006 10:34 am
Hola a todos, es mi primer post aqui aunque ya aprendí muchas cosas des cristalab. Lo que no he encontrado todavía es cómo crear los botones de un menu dependiendo de los datos que haya en un xml.

si ya ha sido tratado en el foro disculpen (soy nuevo :oops: ) pero no lo encontré

Gracias a todos por adelantado.

Por Yranac

421 de clabLevel



Genero:Masculino  

Lugo, Galicia

firefox
Citar            
MensajeEscrito el 11 Ago 2006 12:00 pm
Supón que tienes un xml mydata.xml con una estructura como esta

Código :

<botones>
<item name="bt1" link="http://www.example.com" />
<item name="bt2" link="http://www.cristalab.com" />
<item name="bt3" link="http://www.google.es" />
</botones>

En la biblioteca creas tu botón con un campo de texto dinámico de nombre txt, y lo exportas para AS con el nombre de botón. En el primer fotograma cargas el xml y haces que se creen tantos clips botón como items tengas en el xml y que estñen uno debajo del otro, además les das una propiedaad link, que usarás en el evento onRelease para que vayan allí:

Código :

var myMenu:XML = new XML();
myMenu.ignoreWhite = true;
myMenu.load("mydata.xml");
myMenu.onLoad = function() {
   trace(myMenu);
   for (var i = 0; i<this.firstChild.childNodes.length; i++) {
      btn = _root.attachMovie("boton", "boton"+i, _root.getNextHighestDepth());
      btn._x = 200;
      btn._y = 50+(btn._height*i);
      btn.txt.text = this.firstChild.childNodes[i].attributes.name;
      btn.link = this.firstChild.childNodes[i].attributes.name;
      btn.onRelease = function() {
         getURL(this.link);
      };
   }
};

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 11 Ago 2006 12:47 pm
Muchisimas gracias por la respuesta.

Esta misma tarde me pongo a ello.

Supongo que pronto tendré nuevas dudas así que me vereis por aqui de nuevo :D

Por Yranac

421 de clabLevel



Genero:Masculino  

Lugo, Galicia

firefox
Citar            
MensajeEscrito el 16 Ago 2006 11:06 am
Bueno, aqui estoy de nuevo :crap:

El código que me pasaron fue bien pero ahora tendría que hacer cargar un botón que me dieron en un .as, lo único que cambié fue el nombre del boton pero no va, no da ningún error pero no va...

Código :

onClipEvent (load) {
   var myMenu:XML = new XML();
   myMenu.ignoreWhite = true;
   myMenu.load("mydata.xml");
   myMenu.onLoad = function() {
      trace(myMenu);
      for (var i = 0; i<this.firstChild.childNodes.length; i++) {
         btn = _root.attachMovie("boton_on2", "boton"+i, _root.getNextHighestDepth());
         btn._x = 200;
         btn._y = 50+(btn._height*i);
         btn.txt.text = this.firstChild.childNodes[i].attributes.name;
         btn.link = this.firstChild.childNodes[i].attributes.name;
         btn.onRelease = function() {
            getURL(this.link);
         };
         trace(i);
      }
   };
}


El botón no lo he hecho yo (seria incapaz, acabo de empezar en esto del actionscript) os pongo su código tambien por si no sirviera (esta parte la hizo un diseñador)....

Código :


class boton_on2 extends MovieClip {
   private var estado:String;
   private var rew:Object;
   public var memoria:String;
   function boton_on2(Void) {
      if (this.memoria == null) {
         this.memoria = "memoria_botones";
      }
      this.stop();
      this.onPress = function() {
         this.activar();
         _level0[memoria].desactivar();
         _level0[memoria]=this
         
      };
      this.onRollOver = function() {
         this.over();
      };
      this.onRollOut = this.onReleaseOutside=function () {
         this.no_over();
      };
   }
   public function activar(Void):Boolean {
      this.gotoAndPlay("on");
      this.enabled = false;
      return true;
   }
   public function desactivar(Void):Boolean {
      this.gotoAndPlay("off");
      this.enabled = true;
      return true;
   }
   public function over(Void):Boolean {
      this.rew.removeMovieClip()
      this.gotoAndPlay("over");
      return true;
   }
   public function no_over(Void):Boolean {
      this.gotoAndRewind();
      return true;
   }
   public function estadoactual(Void):String {
      return this.estado;
   }
   public function seleccionado(Void):String{
      return _level0[memoria]
   }
   private function gotoAndRewind(fotograma):Void {
      if (fotograma != null) {
         this.gotoAndStop(fotograma);
      }
      this.createEmptyMovieClip("rew", 55000);
      this.rew.onEnterFrame = function() {
         if (this._parent._currentframe >1) {
            this._parent.prevFrame();
         } else {
            delete this.onEnterFrame;
         }
      };
   }
}


Ruego de nuevo disculpen mi total ignorancia con esto y gracias de antemano

Por Yranac

421 de clabLevel



Genero:Masculino  

Lugo, Galicia

firefox
Citar            
MensajeEscrito el 16 Ago 2006 01:30 pm
A ver con eso han tenido que darte un movieClip ya hecho, o lo tendrás que hacer tú, preguntales sobre esta parte. En el menu vinculación donde pone Identificador pon el nomre con el que lo vayas a exportar, y donde pone clase de AS2 boton_on2

Por Zah

BOFH

4290 de clabLevel

27 tutoriales
5 articulos

  Bastard Operators From Hell Editores

Zaragoza, España

firefox
Citar            
MensajeEscrito el 17 Ago 2006 11:45 am
Pos sigue sin irme na de na :cry:

El trace que tengo puesto si aparece pero el menú.... Ande andará :evil:

:lol: :lol:

Por Yranac

421 de clabLevel



Genero:Masculino  

Lugo, Galicia

firefox
Citar            
MensajeEscrito el 17 Ago 2006 12:37 pm
Rectifico:

Ahora si consigo que por lo menos me aparezcan los tres botones. Todavía no con el texto correcto pero estoy en ello :wink:

Bueno, tampoco están situados donde yo los quiero pero a ver.... Por lo menos veo algo porque hace días que tenía pocos avances ^^

Por Yranac

421 de clabLevel



Genero:Masculino  

Lugo, Galicia

firefox
Citar            
MensajeEscrito el 31 Dic 2008 05:35 am
y si quisiera agregar submenu a ese menu como lo hago?

Por fidoguido

46 de clabLevel



 

firefox

 

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