Comunidad de diseño web y desarrollo en internet online

Efecto repulsion en botones

Citar            
MensajeEscrito el 22 Ago 2013 01:20 pm
Hola. Estoy haciendo un menú en el que los botones son Dragables, lo que intento es que si se suelta un botón encima de otro o de otros, los botones que queden debajo se separen del botón que se acaba de soltar. Más o menos lo he conseguido, pero el efecto queda algo raro.

Tengo un enter frame que llama a una función que comprueba si los 8 botones se tocan entre si, y si es así los separa:

Código ActionScript :

addEventListener(Event.ENTER_FRAME, handleCollision);

//y la función
function handleCollision(e:Event):void
      {
          if(menu_inicio.b1.hitTestObject(menu_inicio.b2))
          {
               menu_inicio.b1.x = menu_inicio.b1.x - 1;
               menu_inicio.b1.y = menu_inicio.b1.y  - 1;
          }
               else if(menu_inicio.b1.hitTestObject(menu_inicio.b3))
           {
                menu_inicio.b1.x = menu_inicio.b1.x - 1;
                menu_inicio.b1.y = menu_inicio.b1.y  - 1;
           }
          else if(menu_inicio.b1.hitTestObject(menu_inicio.b4))
           {
                menu_inicio.b1.x = menu_inicio.b1.x - 1;
                menu_inicio.b1.y = menu_inicio.b1.y  - 1;
           }
                    //y así voy comprobando todos los botones
                    //...
                    //...
}


¿Alguien me podría decir si hay alguna manera menos complicada de hacerlo?
Gracias.

Por plug

78 de clabLevel



Genero:Masculino  

firefox
Citar            
MensajeEscrito el 26 Ago 2013 11:25 am
En realidad podrías hacer que los botones chequeen y se separen mientras estén haciendo hitTest con cualquiera, algo así

Código ActionScript :

function handleCollision(e:Event):void{
   for(var i:int = 1; i<9; i++){
      if(this.hitTestObject(parent.menu_inicio["b"+i)){
         this.x-=1;
         this.y -=1; 
     }
   }
}


De esta forma se irán separando solos ... puedes optimizarlo haciendo que el onRelease dispare un evento que ejecute el hitTestObject y que se detenga cuando no registre mas colisiones ... pero eso depende de cuanto necesites optimizar

Jorge

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

chrome
Citar            
MensajeEscrito el 27 Ago 2013 11:36 am
Muchas gracias Jorge, lo probaré así.

Por plug

78 de clabLevel



Genero:Masculino  

firefox

 

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