2011-04-07 71 views
1

我在將屏幕更改爲要顯示的圖像時出現問題。Java:Keystate操作問題

該圖像是被設置爲陣列的spritesheet(即,第一畫面是在數組索引0等...)

當我按UP鍵和LEFT鍵和ENTER鍵我可以改變,但按下DOWN鍵,程序將不顯示正確的圖像。

我最終想要放棄箭頭鍵按下並按數字鍵(電話號碼鍵)4返回,1,2,3轉到某些頁面並進入下一頁,如果有更多關於特定頁面的信息。

private void actOnKeyStates(int k) { 
     if ((k & DOWN) != 0) { 
      Title = false; 
      HowToPlay = true; 
      Controls = false; 
      About = false; 
     } 
     if ((k & UP) != 0) { 
      Title = false; 
      HowToPlay = false; 
      Controls = true; 
      About = false; 
     } 

     if ((k & LEFT) != 0) { 
      Title = true; 
      HowToPlay = false; 
      Controls = false; 
      About = false; 
     } 

     if ((k & FIRE_PRESSED) != 0) { 
      Title = false; 
      HowToPlay = false; 
      Controls = false; 
      About = true; 
     } 
     update(); 

    } 

    public void update() { 
     if (Title) { 
      Screen.setFrame(0); 
     } 
     if (HowToPlay) { 
      Screen.setFrame(1); 
     } 
     if (Controls) { 
      Screen.setFrame(4); 
     } 
     if (About) { 
      Screen.setFrame(5); 
     } 

    } 

我希望對此事提供任何建議。

+0

不知道有什麼問題,但我會建議您調試並查看當您按下時實際的k值。 – Taylor 2011-06-05 17:07:26

回答

0

首先,我認爲如果你爲你的遊戲建立了一個狀態,而不僅僅是使用越來越多的布爾值,那將會更好。像這樣的:

public enum ScreenState { Title, HowToPlay, Controls, About }  
private ScreenState currentScreen = ScreenState.Title; 

private void actOnKeyStates(int k) { 
    if ((k & DOWN) != 0) { 
     currentScreen = ScreenState.HowToPlay; 
    } 

    if ((k & UP) != 0) { 
     currentScreen = ScreenState.Controls; 
    } 

    if ((k & LEFT) != 0) { 
     currentScreen = ScreenState.Title; 
    } 

    if ((k & FIRE_PRESSED) != 0) { 
     currentScreen = ScreenState.About; 
    } 

    update(); 
} 

public void update() { 
    switch(currentScreen) { 
     case Title:  
      Screen.setFrame(0); 
      break; 
     case HowToPlay: 
      Screen.setFrame(1); 
      break; 
     case Controls: 
      Screen.setFrame(4); 
      break; 
     case About: 
      Screen.setFrame(5); 
      break; 
    } 
} 

你需要做的第二件事情是確認k時向下箭頭時被正確執行& DOWN。同時確認您要查找的圖像是否正確放置在精靈表中的位置1