Comunidad de diseño web y desarrollo en internet online

Control de Objetos con botones genéricos

Citar            
MensajeEscrito el 03 Feb 2011 04:34 pm
Hola, a ver si alguien puede ayudarme por favor.
Quiero tener varios objetos en la pantalla.
Los objetos tienen que ser seleccionables.
Cuando se seleccione un objeto, se pueda modificar su tamaño apretando unos botones mas y menos, color, etc.. y estos botones tienen que valer para cualquier objeto que seleccione.
Agradecería mucho unas lineas de código pues no doy con ello. :?

Gracias!!!!!!!

Por honsuales

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 Feb 2011 05:09 pm
No tienes más que guardar en una variable el Objeto Seleccionado. Luego, cuando pinches un botón, cambias lo que quieras de esa "variable".

Para controlar que se hace click en un objeto lo puedes hacer añadiendo un diversos eventos a tus MCs (supongamos que tienen como nombre de instancia "mc1","mc2"... y que tienes un boton "bt1"

Código ActionScript :

//aquí la variable
var objetoSeleccionado:DisplayObject=null;
//Nuestros listeners a los MCs
mc1.addEventListeners(MouseEvent.MOUSE_DOWN,seleccionarObjeto)
mc2.addEventListeners(MouseEvent.MOUSE_DOWN,seleccionarObjeto)
//Nuestros listeners a los botones
bt1.addEventListeners(MouseEvent.MOUSE_DOWN,moverObjeto)

//nuestra función seleccionarObjeto simplemente asigna a la variable "objetoSeleccionado"
//el MC "clickado"
function seleccionaObjeto(e:MouseEvent){
    //debemos hacer una "conversión de cast", ese "as DisplayObject
    objetoSeleccionado=e.target as DisplayObjet
}
//nuestra función moverObjeto, movera el objeto de la variable
function moverObjeto(e:MouseEvent){
    objetoSeleccionado.x+=10
}


NOTA:Personalmente añadir tantos MOUSE_DOWN no me parece una gran idea,puesto que podemos tener uno sólo aplicado al stage. o, si tenemos una zona de dibujo y una zona de botones (dos MCs "area" y "menu") dos únicos MOUSE_DOWN.

Claro, que para saber dónde se ha clickado DEBEMOS dar valor a la propiedad "name" de los objetos. Así sabremos qué botón se ha pulsado, luego conforme a su nombre haremos una cosa u otra. Sólo dejo código indicado

Código ActionScript :

//aquí la variable
var objetoSeleccionado:DisplayObject=null;
//Un único listeners
stage.addEventListeners(MouseEvent.MOUSE_DOWN,mouseClick)
//Le damos nombre a nuestros MCs
mc1.name="obj1"
mc2.name="obj2"
boton1.name="boton1"
function mouseClick(e:MouseEvent)
     trace(e.target.name)
     //según el valor de e.target.name sabremos si es un botón, o un MC
     //y actuaremos en consecuencia
}

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 Feb 2011 06:33 pm
Muchas gracias por tu respuesta.
Voy a probarlo y te comentaré.

Por honsuales

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 03 Feb 2011 08:08 pm
Hola lo acabo de probar y funciona muy bien.Se ha escapo alguna s y alguna cosa más , así que dejo aquí el código con esas pequeñas correcciones.
Muchas gracias me ha sido de gran ayuda.

//aquí la variable
var objetoSeleccionado:DisplayObject=null;
//Nuestros listeners a los MCs
mc1.addEventListener(MouseEvent.MOUSE_DOWN,seleccionarObjeto)
mc2.addEventListener(MouseEvent.MOUSE_DOWN,seleccionarObjeto)
//Nuestros listeners a los botones
bt1.addEventListener(MouseEvent.MOUSE_DOWN,moverObjeto)

//nuestra función seleccionarObjeto simplemente asigna a la variable "objetoSeleccionado"
//el MC "clickado"
function seleccionarObjeto(e:MouseEvent){
//debemos hacer una "conversión de cast", ese "as DisplayObject
objetoSeleccionado=e.target as DisplayObject
}
//nuestra función moverObjeto, movera el objeto de la variable
function moverObjeto(e:MouseEvent){
objetoSeleccionado.x+=10
}

Por honsuales

23 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Feb 2011 07:16 am
ojo! te falta, en la función moverObjeto, asegurarte de que objetoSeleccionado tenga algún valor (si no, si pulsas primero "bt1", dará error

Código ActionScript :

function moverObjeto(e:MouseEvent){
  if (objetoSeleccionado){ //si existe y tiene algún valor
       objetoSeleccionado.x+=10
  }
} 

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 04 Feb 2011 09:20 am
Gracias Eliseo.

Por honsuales

23 de clabLevel



 

firefox

 

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