Comunidad de diseño web y desarrollo en internet online

Duda en cambio de profundidades de un objeto mediante AS3.

Citar            
MensajeEscrito el 23 Jul 2012 08:26 am
Buenas, estoy terminando un proyecto de juego. En este caso (ya tuve que pedir ayuda con unos problemas en la importación de XML en otra ocasion y que ya he resuelto) el problema es que tengo que crear una plantilla de "celdas" para un visionado isonometrico de la pantalla con intencion de poder crear una plantilla donde poder colocar objetos. Creo la plantilla de celdas mediante dos bucles que importan el objeto "celda" que ya tengo dibujado y tal, y hasta ahí ningun problema. Pero al crear el posicionador de objetos tengo 2 problemas. El primero es que no tengo ni idea de como automatizar el cambio de profundidad para que un objeto puesto en la fila 1 sea mas "lejano" a uno puesto en la fila 2, por ejemplo, ya que puedo acceder a la propiedad getChildAt, pero para poder colocar el objeto (que se hace en el swf mediante un sistema de clicks) necesito poder hacer algo como eso "getChildAt("posicion en child de la celda clickada" +1)". El segundo problema surge en el primero y es que hay objetos que me interesa que puedan ser posicionados "por debajo" la celda, para luego poder poner otros encima de esos ya que, si lo hago distinto, al cubrirme los primeros la celda, pierdo la posibilidad de hacerles click, y con ello, la posibilidad de cubrirlas más de una vez. ¡Ayuda por favor!

Por liourk

5 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Jul 2012 08:31 am
Olvidé poner el código:

por ahora está asi, la idea es poder extenderlo a muchos mas objetos.

CÓDIGO:
------------------------------------------------------

Código ActionScript :

import flash.events.MouseEvent;
import flash.display.Sprite;
script1.text = "H1";
script2.text = "R1";
//celdas externas
var countx:int=18;
var county:int=-1;
var counter:int=0;
var selectnum:int=NaN;
var objectac:Sprite;
while (counter<378){
   if (countx<18){
      var celda=new cell();
      addChild(celda);
      celda.x=countx* 30+150;
      celda.y=county* 15;
      celda.name="cx"+countx+"y"+county;
      celda.addEventListener(MouseEvent.CLICK, Paste);
      countx++;
      counter++;
   } else if (countx==18){
      countx =0;
      county++;
   }
}
//celdas internas
var countx_int:Number=0.5;
var county_int:Number=0.5;
var counter_int:int=0;
while (counter_int<340){
   if (countx_int<17.5){
      var celda_int=new cell();
      addChild(celda_int);
      celda_int.x=(countx_int* 30)+150;
      celda_int.y=(county_int* 15);
      celda_int.name="cx"+countx_int+"y"+county_int;
      celda_int.addEventListener(MouseEvent.CLICK, Paste);
      countx_int++;
      counter_int++;
   } else if (countx_int==17.5){
      countx_int =0.5;
      county_int++;
   }
}
//----------------------------------------------------------------------------------------
script1.addEventListener(MouseEvent.CLICK, selec1)
function selec1(e:MouseEvent):void{
   selectnum = 1;
}
script2.addEventListener(MouseEvent.CLICK, selec2)
function selec2(e:MouseEvent):void{
   selectnum = 2;
}
function Paste(e:MouseEvent):void{
   if(selectnum==1){
      var h = new h1();
      addChild(h);
      h.x = Math.floor((e.target.x)-5);
      h.y = Math.floor((e.target.y)-2.5);
   }else if (selectnum==2){
      var ro = new r1();
      addChild(r);
      ro.x = Math.floor((e.target.x)-1.475);
      ro.y = Math.floor((e.target.y)-12.05);
   }
}


Muchas gracias de antemano.

Por liourk

5 de clabLevel



 

firefox

 

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