2015-04-07 90 views
0

我實現的一個小遊戲(基本遊戲狀態),我也很難用按鈕導航。 我有一個類包含3個按鈕的菜單:播放,如何播放和退出。 例如,當我點擊How To Play按鈕時,它會將我重定向到How To Play類。 在如何玩類我只有一個按鈕:返回這是假設重定向我回到Menu類。 一切正常,但當我點擊後退按鈕它退出遊戲,這是因爲它具有與菜單中的退出按鈕相同的座標。 如何阻止傳播? 我的代碼是這樣的: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); 
} 

它將不再傳播。