Comunidad de diseño web y desarrollo en internet online

Carga de subsecciones para menu vertical con xml

Citar            
MensajeEscrito el 24 Sep 2008 08:54 am
Hola, estoy haciendo un menu vertical de tipo persiana en flash. Las subsecciones se cargan de un archivo .xml y todo me funciona bien, excepto la carga de las subsecciones. Lo que ocurre parece ser es que se cargan todas en un mismo nivel. Añado el código y si alguien me echara una mano lo agradecería mucho.
(código en el primer frame)

Código :

//declaramos botones y mcs.
var principal_mc:MovieClip=this.createEmptyMovieClip("principal_mc",5);
var altura:Number;
var institut_btn:Button;
trace(institut_btn.getDepth());//-16355
var departaments_btn:Button;
var organitzacio_btn:Button;
var subseccion_mc:MovieClip=this.createEmptyMovieClip("subseccion_mc",1);
var boton_btn:Button=subseccion_mc.boton_btn;
var estudis_btn:Button;
var activitats_btn:Button;
var administracio_btn:Button;
var fct_btn:Button;
var revista_btn:Button;
var alturaBotongrande:Number;
var alturaBotongrande = institut_btn._height;
//creamos la funcion restablecer xa q los botones vayan a su origen. Esta funcion se invoca cada vez q pulsemos un boton, lo primero de todo.
function restablecer(){
   institut_btn._x=0;
   institut_btn._y=0;
   departaments_btn._x=0;
   departaments_btn._y=34.4;
   organitzacio_btn._x=0;
   organitzacio_btn._y=69.0;
   estudis_btn._x=0;
   estudis_btn._y=102.0;
   activitats_btn._x=0;
   activitats_btn._y=136.0;
   administracio_btn._x=0;
   administracio_btn._y=170.0;
   fct_btn._x=0;
   fct_btn._y=205.0;
   revista_btn._x=0;
   revista_btn._y=240.0;
}


La programación que os adjunto ahora es la que esta dentro de uno de los botones. Para el resto de botones se repite casi igual.

Código :

on (release) {
   restablecer();//xa q los botones vuelvan a su posición inicial
   removeMovieClip(_root.subseccion_mc);
   trace("removeMovieClip");
   var myMenu:XML = new XML();//creo la variable xml
   myMenu.ignoreWhite = true;//le digo q ignore los espacios
   myMenu.load("institut.xml");//cargo el xml
   myMenu.onLoad = function() {
      //esta variable (altura)sirve xa el tween. xa saber cuánto han de bajar los botones de las secciones.
      altura = this.firstChild.childNodes[0].childNodes.length*17+alturaBotongrande+5;
      //le digo q ejecute la funcion q más abajo se especifica. cn la variable altura
      transicion(altura);
      for (var i = 0; i<this.firstChild.childNodes[0].childNodes.length; i++) {
         //aki q atache las subbsecciones según el num d childs. (childNodes.length)
         //_root sirve xa decir q en la raíz o sea en la parte principal de nuestra película, agregamos una copia del MC subseccion
         btn = _root.attachMovie("subseccion_mc", "subseccion_mc"+i,_root.getDepth());//si pongo i en lugar de _root.getDepth() m carga todas las subsecciones xo no las descarga. si pongo _root..solo carga una subseccion (la más arriba) y sí que las descarga.[b]AQUÍ ESTÁ EL PROBLEMA[/b]
         //trace(altura);
         //colocamos las subsecciones en sus coordenadas.
         btn._x = 0;
         //y=la altura dl bnt grande(el d secciones) + la suma de las alturas de las subsecciones q cargamos dsd el xml.
         btn._y = alturaBotongrande+(btn._height*i);
         //q escriba dntro dl textfield lo q ponga en cada child dl nodo 0
         btn.label1_txt.text = myMenu.firstChild.childNodes[0].childNodes[i].firstChild.nodeValue;
         //aki indicamos q al pulsar al boton q ay dentro del movieclip "subsecciones_mc" ahora llamado btn, vaya al link especificado en su child.
         btn.boton_btn.link = this.firstChild.childNodes[1].childNodes[i].firstChild.nodeValue;
         //lo mismo aki, si no ponemos .boton_btn no se verá el boton activo, no funcionará el "sobre".
         btn.boton_btn.onRelease = function() {//he cambiado la ruta, añadiendo boton_btn dsp d btn. ahora sí q se ve el boton activo on over, xo no va el link.
            getURL(this.link);
         };
      }
      //aki hacemos la funcion xa q haga el tween. En nuestro caso le hemos hecho el tween a cada boton x separado. Me hubiera gustado x movieclips completos o haciendo una funcion más copacta. Más adelante lo optimizaremos.
      function transicion(altura:Number) {
         import mx.transitions.Tween;
         import mx.transitions.easing.*;
         //var miTween:Tween = new Tween(obj, prop, func, begin, finish, duration, useSeconds)
         var miTween:Tween = new new Tween(departaments_btn, "_y", Regular.easeOut, departaments_btn._y, altura+2, 0.5, true)();
         var miTween:Tween = new new Tween(organitzacio_btn, "_y", Regular.easeOut, organitzacio_btn._y, altura+2+alturaBotongrande, 0.5, true)();
         var miTween:Tween = new new Tween(estudis_btn, "_y", Regular.easeOut, estudis_btn._y, altura+2+alturaBotongrande*2, 0.5, true)();
         var miTween:Tween = new new Tween(activitats_btn, "_y", Regular.easeOut, activitats_btn._y, altura+2+alturaBotongrande*3, 0.5, true)();
         var miTween:Tween = new new Tween(administracio_btn, "_y", Regular.easeOut, administracio_btn._y, altura+2+alturaBotongrande*4, 0.5, true)();
         var miTween:Tween = new new Tween(fct_btn, "_y", Regular.easeOut,fct_btn._y, altura+3+alturaBotongrande*5, 0.5, true)();
         var miTween:Tween = new new Tween(revista_btn, "_y", Regular.easeOut, revista_btn._y, altura+4+alturaBotongrande*6, 0.5, true)();
         //revista_btn._visible=false;
      }
   };
}

Espero comprendais la duda. Muchas gracias.

Por Mol

18 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Sep 2008 12:11 pm
Alguien sabe algo? necesito alguna respuesta por favor.. El `problema esta en la profundidad. (.getDepth(), _root.getNexthighestDepth(), etc.

Gracias

Por Mol

18 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Sep 2008 12:14 pm
Yo en realidad no entiendo lo que te sucede, podrías explicar esto mejor:

Las subsecciones se cargan de un archivo .xml y todo me funciona bien, excepto la carga de las subsecciones.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 25 Sep 2008 12:27 pm
Yo tengo un menú cuyas subsecciones se cargan de un xml. Entonces yo le digo que por cada child del xml m adjunte/atache una movie( que se llama subseccion_mc).
El problema esta a la hora de hacer el AttachMovie, que hay que asignarle una profundidad. Si yo le asigno getNextHighestDepth me carga las subsecciones por encima de los botones de las secciones. Si le pongo get.Depth en la profundidad del attachMovie me carga sólo la subseccion más alta de todas(es decir con la menor profundidad). Solo me carga una subseccion, xo sin embargo la carga en la profundidad deseada, es decir, debajo de los botones de las secciones.

A ver si ahora me he explicado mejor,

muchas gracias.

Por Mol

18 de clabLevel



 

firefox
Citar            
MensajeEscrito el 25 Sep 2008 07:39 pm
Ok, creo que entendí el problema.
En principio, la opción clara es getNextHighestDepth. Si cargas un elemento en un nivel que ya está ocupado por otro, el segundo reemplazará al primero (por eso es que no te funciona con getDepth.
Para que puedas mantener un orden más claro y manejar mejor los elementos, pon los movieclips que representan los botones dentro de un movieclip, así, al manipular al movieclip contenedor manipulas también los elementos que contiene. No sé en qué nivel quieres cargar las subsecciones, pero siempre será más fácil mover un sólo movieclip que varios. Por cierto, por tu bien y el del resto de la humanidad, deja de usar "_root".
Y por todo lo justo y bueno que hay en el mundo ¿qué tienes en contra del castellano, por Dios? me costó más entender los comentarios que el propio código.

Por The Fricky!

Presidente

6168 de clabLevel

3 tutoriales
8 articulos

Genero:Masculino   Bastard Operators From Hell Héroes

Piccola Venezia...

firefox

 

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