Comunidad de diseño web y desarrollo en internet online

fijar el indice de un objeto

Citar            
MensajeEscrito el 29 Dic 2009 04:17 am
Hola a todos!
Vereis, tengo un problemilla.
Resulta que estoy moviendo un Movieclip (es un pequeño) por la pantalla y éste se mueve sobre otros MC que estan en capas inferiores a la del robot.
El juego puede cargar pantallas creadas por el usuario. Al cargar estas pantallas existen casillas que pueden combertirse en bloques de diferentes alturas (dependiendo de la altura el robot puede saltar sobre ellos o no).
Lo que ocurre es que hay bloques que, puede darse el caso, de que en algun momento tengan que estar por delante del robot, para dar efecto de profundidad. Eso no es problema. Tambien se me ocurrio como hacerlo.
El problema esta en que para hacerlo voy controlando las casillas que estan alrededor del robot. Las que por la perspectiva y porque sean bloques puedan tapar al robot las traigo al frente, y si lo van a tapar y no deben las llevo atras.
Este hecho hace que si hay bloques, unos delante de los otros, si llevo al frente a uno, tengo que llevar al frente al bloque que estuviese por delante de este, y asi hasta que no queden bloques que tapen al resto... Un poco lioso, creo. Bueno continuo y luego mirais la imagen y el codigo.
La cuestion es que para que ningun bloque que deba estar detras solape a uno que deba estar delante, he creado una funcion recursiva que recorre todos los bloques que pueden tapar al robot y a los bloques que voy trayendo al frente. Y mas o menos funciona (me da un fallo en una esquina (el escenario es un cuadrado de 8x8)), pero no es eficiente del todo ¿Porque? Porque pasa varias veces por elementos que ya han sido cambiados de posicion.
Esto no seria muy grabe si no me hubiese dado cuenta de que cuando subo de capa (mediante setChildIndex) un objeto, el resto baja. Y esto es un problema porque seria necesario que eso no pasase.
Y aqui va: ¿se pueden poner varios objetos en el mismo indice (capa)? ¿Puedo fijar un elemento en una capa y que no pueda bajar de ella (vamos, que exista una funcion que sea mas o menos setChildIndexFijoQueTeCagasYNoLoMuevesNiDeCoña)?

Bueno aqui os pongo una primera imagen de como seria el juego con las casillas y los bloques:




En esta otra el robot a avanzado, pero como se puede apreciar el bloque de la esquina inferior no esta colocado como toca:

Por SeiyaJapon

54 de clabLevel



 

España

firefox
Citar            
MensajeEscrito el 29 Dic 2009 04:23 am
A ver, que le he dado a "enviar" en lugar de vista previa...

Aqui os pongo el codigo de la funcion recursiva para que le deis un vistazo, a ver si alguien me puede ayudar un poco:

Código ActionScript :

private function CalculoIndiceCasilla(pF:int, pC:int, cont):void
      {
         if ((pF > 0) && (pF < 7) && (pC > 0) && (pC < 7))
         {
                  
            if (matrizCasillas[pF][pC-1].nivelCasilla > robot.nivel)
            {
               setChildIndex(matrizCasillas[pF][pC-1], 92+cont);
               tp.text += " " + matrizCasillas[pF][pC-1].name + ": " + getChildIndex(matrizCasillas[pF][pC-1]) + ";";
               CalculoIndiceCasilla(pF, pC-1, cont+1);
            }
            
            if (matrizCasillas[pF+1][pC-1].nivelCasilla > robot.nivel)
            {
               setChildIndex(matrizCasillas[pF+1][pC-1], 92+cont);
               tp.text += " " + matrizCasillas[pF+1][pC-1].name + ": " + getChildIndex(matrizCasillas[pF+1][pC-1]) + ";";
               CalculoIndiceCasilla(pF+1, pC-1, cont+1);
            }
            
            if (matrizCasillas[pF+1][pC].nivelCasilla > robot.nivel)
            {
               setChildIndex(matrizCasillas[pF+1][pC], 92+cont);
               tp.text += " " + matrizCasillas[pF+1][pC].name + ": " + getChildIndex(matrizCasillas[pF+1][pC]) + ";";
               CalculoIndiceCasilla(pF+1, pC, cont+1);
            }
            //tp.text += " " + matrizCasillas[pF][pC].name + ": " + getChildIndex(matrizCasillas[pF][]) + ";";
         }
      }

Por SeiyaJapon

54 de clabLevel



 

España

firefox

 

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