lunes, 25 de junio de 2012

Tutorial XNA(Click): Como crear evento OnClick en XNA

Hola, voy a inaugurar este blog con un tutorial de XNA.



Vi en muchos foros que mucha gente tiene problemas cuando agregan una funcion al hacer click en un menu por ejemplo, donde se tienen varios elementos clicleables agrupados, al usar "Mouse.GetState().LeftButton == ButtonState.Pressed" el click literalmente se ejecuta las cantidad de veces por la cual permanece el click precionado, como en el bucle de vida de XNA, se ejecuta millones de veces por segundo imagenense la cantidad de elementos que se pueden clickear con un simple click, esto genera muchos problemas cuando hay un elemento clickeable por encima de otro. Para solucionar esto cree una funcion bastante simple que soluciona de manera efectiva este error.

Definimos 1 variable antes de public Game1()

 bool mouseDown = false;  

Y creamos una nueva funcion inmediatamente debajo:
 public bool OnLeftClick()  
     {  
       if (ButtonState.Pressed == Mouse.GetState().LeftButton)  
       {  
         mouseDown = true;  
       }  
       else if (ButtonState.Released == Mouse.GetState().LeftButton)  
       {  
         if (mouseDown == true)  
         {  
           mouseDown = false;  
           return true;  
         }  
       }  
       return false;  
     }  

Ahora en lugar de usar la sentencia if(Mouse.GetState().LeftButton == ButtonState.Pressed), usamos la siguiente: if(OnLeftClick()) , esto solucionara el problema anteriormente planteado.

Eso fue todo, no olviden comentar, un saludo.

No hay comentarios:

Publicar un comentario