2015-04-07 3 views
0

Я реализую небольшую игру (основное состояние игры), и мне сложно перемещаться по кнопкам. У меня есть меню классов, которое содержит 3 кнопки: Play, How To Play and Exit. Например, когда я нажимаю кнопку «Как играть», она перенаправляет меня в класс «Как играть». В Как играть в класс У меня есть только кнопка: Назад, которая, как предполагается, перенаправляет меня обратно в класс меню. Все работает, но когда я нажимаю кнопку «Назад», он выходит из игры, и это связано с тем, что он имеет те же координаты, что и кнопка «Выход» из меню. Как я могу остановить распространение? Мой код, как:Распространение событий мыши Slick2D

Main Class: 

public void update(GameContainer gc, StateBasedGame sbg, int delta) throws SlickException{ // update the images on screen to create image movement illusion 
    Input input = gc.getInput(); 
    mouseX = Mouse.getX(); 
    mouseY = gc.getHeight()-Mouse.getY(); 
    position = "*xpos: "+mouseX+" ypos:"+mouseY; 
    buttonsListener(input, sbg); 
} 
public void buttonsListener(Input input, StateBasedGame sbg) throws SlickException 
{ 

    if((mouseX>130&&mouseX<477)&&(mouseY>308&&mouseY<377))//play button 
     if(input.isMouseButtonDown(0)) 
      sbg.enterState(1); 

    if((mouseX>130&&mouseX<477)&&(mouseY>408&&mouseY<477))//how to play button 
     if(input.isMouseButtonDown(0)) 
      sbg.enterState(2); 

    if((mouseX>130&&mouseX<477)&&(mouseY>508&&mouseY<577))//exit button 
     if(input.isMouseButtonDown(0)) 
      System.exit(0); 
} 

И:

HowToPlay Class: 

public void update(GameContainer gc, StateBasedGame sbg, int delta) throws SlickException{ 
    Input input = gc.getInput(); 
    mouseX = Mouse.getX(); 
    mouseY = gc.getHeight()-Mouse.getY(); 

    if((mouseX>130&&mouseX<477)&&(mouseY>508&&mouseY<577))//back button 
     if(input.isMouseButtonDown(0)) 
      sbg.enterState(0); 
} 

Пожалуйста, помогите, спасибо.

ответ

0

я понял, так что для любого из вас с той же проблемой, вы можете просто переписать метод mousePressed, как (в моем случае):

Main class: 
public void mousePressed(int button, int x, int y) { // check if the buttons are pressed 
     if((x>130&&x<477)&&(y>308&&y<377)) 
      if(button==0) 
       sbg.enterState(1); 
     if((x>130&&x<477)&&(y>408&&y<477)) 
      if(button==0) 
       sbg.enterState(2); 
     if((x>130&&x<477)&&(y>508&&y<577)) 
      if(button==0) 
       System.exit(0); 
    } 

И

Howtoplay class: 
public void mousePressed(int button, int x, int y) { // check if the buttons are pressed 
    if((x > 130 && x < 477) && (y > 508 && y < 577)) 
     if(button==0) 
      sbg.enterState(0); 
} 

И это больше не будет распространяться.

Смежные вопросы