Comunidad de diseño web y desarrollo en internet online

Posicionamiento en rejilla

Citar            
MensajeEscrito el 27 May 2006 11:44 pm
Holaaaas :D

Bueno, otra pregunta, para no variar, a ver si puedo ayudar yo a alguien aguna vez en lugar de preguntar tanto ;)

Mi problema es que quiero colocar un número indeterminado (hasta que leo de un xml) de MCs rectangulares dentro de otro MC y que se posicionen como si fuera una tabla de 2 columnas y X filas. He intentado ver como se hacía en el tutorial de la galeria fotográfica de CL, pero la verdad no acabo de verlo. ¿Alguien me puede orientar?.

Gracias de antemano.

Por Cybrid

30 de clabLevel



Genero:Masculino  

Bilbao (Spain)

firefox
Citar            
MensajeEscrito el 28 May 2006 08:11 am
pues simplemente

x = primeraColumna*Math.abs((numeroDeMC%2)-1)+segundaColumna*(numeroDeMC%2);
y = distanciaVertical*(numeroDeMC-(numeroDeMC%2));

en ambos casos suponiendo que el primer número sea 0

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 



Ultima edición por _CONEJO el 28 May 2006 09:29 am, editado 2 veces

clabbrowser
Citar            
MensajeEscrito el 28 May 2006 09:22 am
no te sigo, a que te refiere con primera columna?. Supongo que x e y son las posiciones de uno de los MC. Lo que tengo es un for (i=0;i<numeroDeMC;i++){
attachMovie ("nuevoMC"+i); }//pongo nuevo MC por no escribir toda la funcion.

Por Cybrid

30 de clabLevel



Genero:Masculino  

Bilbao (Spain)

firefox
Citar            
MensajeEscrito el 28 May 2006 09:34 am
ok, here we go
NOTA: Cambié un poco la fórmula

x = primeraColumna*Math.abs((numeroDeMC%2)-1)+segundaColumna*(numeroDeMC%2);
x : variable que recibirá la coordenada X, puse x por no poner tuMC._x por ejemplo
primerColumna : coordenada X de la primera columna, es decir, a qué distancia estará la primera columna
segundaColumna : coordenada X de la segunda columna
numeroDeMC : contador que indica en qué MC nos encontramos (numeroDeMC debe de variar entre 0 y "numeroTotalDeMCs-1")

¿Qué hace el churro de arriba? Sencillo, el símbolo % lo que hace es devolver el resto de una división, en éste caso si dividimos por 2 (%2) devolverá 0 o 1 (0%2 =0, 1%2=1, 2%2=0, 3%2=1,....)
Así tenemos una serie alternada de 0,1,0,1,0,1,0,....

esta parte primeraColumna*Math.abs((numeroDeMC%2)-1)
cuando la division sea 0, estamos en un MC "par" {0,2,4,...] es decir los que van en la primera columna, Math.abs(0-1) = 1, al multiplicarlo por las coordenada de la primera columna lo que hará será ponerlo ahí. Cuando es impar 1-1=0 no afectará nada

segundaColumna*(numeroDeMC%2);
esto es similar, si es par (primera columna) valdrá 0, por lo que no afectará, en el caso de que sea impar, se le adjudicará el valor de la segunda columna

tu for ha de ser algo como

for (var numeroDeMC:Number = 0;numeroDeMC<numeroMCTotales;numeroDeMC++){





y = distanciaVertical*(numeroDeMC-(numeroDeMC%2));

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

clabbrowser
Citar            
MensajeEscrito el 28 May 2006 10:06 am
supongo que <distanciaVertical> es la distancia que quiero dejar entre MCs. Te lo pregunto porque no tira (salen todos en la misma posición). Esto es lo que tengo puesto.

Código :

   var total:Number= xmlData.firstChild.childNodes.length;//total de albumes
   var albums:Array = xmlData.firstChild.childNodes;//datos de los albumes
   var posCol1:Number = 1.0;
   var posCol2:Number = 300.0;
   for(var i:Number=0;i<total;i++){
      container.attachMovie("gBox","gBox"+i,getNextHighestDepth());
      container["gBox"+i].galTitle_txt.text=albums[i].attributes.title;
      container["gBox"+i].galDesc_txt.text=albums[i].attributes.description;
      container["gBox"+i]._x=posCol1*Math.abs((i%2)-1)+posCol2*(i%2);
      container["gBox"+i]._y=20.0*(i-(i%2));
      }

Por Cybrid

30 de clabLevel



Genero:Masculino  

Bilbao (Spain)

firefox
Citar            
MensajeEscrito el 28 May 2006 11:57 am
Hola?

Por Cybrid

30 de clabLevel



Genero:Masculino  

Bilbao (Spain)

firefox
Citar            
MensajeEscrito el 28 May 2006 12:32 pm
Hola?

Oye, lo siento, pero yo NO soy tu soporte técnico, no me pagan por estar aquí resolviendo dudas y problemas, lo único que se pide es un poco de paciencia.


pon esto en tu for y dinos que te sale

trace(i+" - "+(i%2)+" - "+posCol1*Math.abs((i%2)-1)+" - "+posCol2*(i%2)+" - "+Math.abs((i%2)-1)+" - "+(20.0*(i-(i%2)))+" - "+(i-(i%2)));

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

clabbrowser
Citar            
MensajeEscrito el 28 May 2006 12:39 pm
Vale, perdón, lo siento, no pretendía que fueras mi soporte técnico, lo siento. Gracias por responder, ya se que no tienes porqué, pero esto es algo que me urge muchísimo (una práctica de la uni, que vale el 70% de la nota de una asignatura) y supongo que estoy nervioso.

Esto es lo que sale

0 - 0 - 1 - 0 - 1 - 0 - 0
1 - 1 - 0 - 300 - 0 - 0 - 0
2 - 0 - 1 - 0 - 1 - 40 - 2
3 - 1 - 0 - 300 - 0 - 40 - 2

Por Cybrid

30 de clabLevel



Genero:Masculino  

Bilbao (Spain)

firefox
Citar            
MensajeEscrito el 28 May 2006 12:58 pm
container["gBox"+i]._y=20.0*(i-(i%2)); divide por por de forma

container["gBox"+i]._y=20.0*(i-(i%2))/2;

Por lo demás los datos son correctos debería de hacer la asignación,
quita el trace y pon

trace(container["gBox"+i]._x+" - "+container["gBox"+i]._y);
después de asignarle los valores a ver que te sale...

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 



Ultima edición por _CONEJO el 28 May 2006 02:07 pm, editado 1 vez

clabbrowser
Citar            
MensajeEscrito el 28 May 2006 02:05 pm
Sustituyendo la línea que tenía en la asignación de _y antes por

container["gBox"+i]._y=20.0*(i-(i%2))/20;

ahora sale

1 - 0
300 - 0
1 - 2
300 - 2

Por Cybrid

30 de clabLevel



Genero:Masculino  

Bilbao (Spain)

firefox
Citar            
MensajeEscrito el 28 May 2006 02:08 pm
no era entre 20 era entre 2

los datos parecen correctos, lo único que se me ocurre es que esos MC's no estén bien referenciados.... su nombre no sea ese

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

clabbrowser
Citar            
MensajeEscrito el 28 May 2006 02:11 pm
No se supone que si estuvieran mal referenciados los mc's no saldría ninguno?, y lo que pasa es que aparecen todos en el mismo sitio. Por si las moscas te pasteo todo el codigo:

Código :

var selectedPics;
var   xmlData:XML=new XML();
xmlData.ignoreWhite=true;

xmlData.load("gallery1.xml");

xmlData.onLoad=function(ok){
   if(ok){
      var total:Number= xmlData.firstChild.childNodes.length;//total de albumes
      var albums:Array = xmlData.firstChild.childNodes;//datos de los albumes
      var posCol1:Number = 1.0;
      var posCol2:Number = 300.0;
      for(var i:Number=0;i<total;i++){
         container.attachMovie("gBox","gBox"+i,getNextHighestDepth());
         container["gBox"+i].galTitle_txt.text=albums[i].attributes.title;
         container["gBox"+i].galDesc_txt.text=albums[i].attributes.description;
         container["gBox"+i]._x=posCol1*Math.abs((i%2)-1)+posCol2*(i%2);
         container["gBox"+i]._y=20.0*(i-(i%2))/20;
         trace(container["gBox"+i]._x+" - "+container["gBox"+i]._y);
         }
      }
   else{
      trace("Error loading XML");}
   }

Por Cybrid

30 de clabLevel



Genero:Masculino  

Bilbao (Spain)

firefox
Citar            
MensajeEscrito el 28 May 2006 02:15 pm
prueba con

for(var i:Number=0;i<total;i++){
var tmp:MovieClip = container.attachMovie("gBox","gBox"+i,getNextHighestDepth());
tmp.galTitle_txt.text=albums[i].attributes.title;
tmp.galDesc_txt.text=albums[i].attributes.description;
tmp._x=posCol1*Math.abs((i%2)-1)+posCol2*(i%2);
tmp._y=20.0*(i-(i%2))/2;
}
}

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

clabbrowser
Citar            
MensajeEscrito el 28 May 2006 02:28 pm
Más de lo mismo, todas en el mismo sitio. Esto empieza a ser raroooraroooaraooooo

esto es lo que hay ahora:

Código :

xmlData.onLoad=function(ok){
   if(ok){
      var total:Number= xmlData.firstChild.childNodes.length;//total de albumes
      var albums:Array = xmlData.firstChild.childNodes;//datos de los albumes
      var posCol1:Number = 1.0;
      var posCol2:Number = 300.0;
      for(var i:Number=0;i<total;i++){
            
         var tmp:MovieClip = container.attachMovie("gBox","gBox"+i,getNextHighestDepth());
         tmp.galTitle_txt.text=albums[i].attributes.title;
         tmp.galDesc_txt.text=albums[i].attributes.description;
         tmp._x=posCol1*Math.abs((i%2)-1)+posCol2*(i%2);
         tmp._y=20.0*(i-(i%2))/2;
         trace(container["gBox"+i]._x+" - "+container["gBox"+i]._y);
         }
      }

Y esto es lo que saca el trace:
1 - 0
300 - 0
1 - 20
300 - 20
1 - 40
300 - 40
//salen más porque he añadido 2 albumes mas (ahora son 6) pero ¿eso debería dar igual, no?

Por Cybrid

30 de clabLevel



Genero:Masculino  

Bilbao (Spain)

firefox
Citar            
MensajeEscrito el 28 May 2006 02:33 pm
el trace indica que están en buena posición, al menos que después la modifiques en algún lado deberían de mostrarse correctamente...

Por _CONEJO

BOFH

7639 de clabLevel

17 tutoriales
21 articulos

 

clabbrowser
Citar            
MensajeEscrito el 28 May 2006 02:36 pm
No no modifico la posicion otra vez. ¿puede ser un tema de profundidad?, ¿que simplemente solo vea 1?. Porque sino no me lo explico.

Actualizacion: Vale es problema del movieClip <container> ha sido eliminarlo y ahora funciona bien. Pero la verdad, no lo entiendo.

Por Cybrid

30 de clabLevel



Genero:Masculino  

Bilbao (Spain)

firefox

 

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