開始菜單的實現
Menu類
按我們上一節的程序總框架,我們要實現開始菜單,主要就是實現開始菜單的Entity即Menu類。
而Menu類中主要的就是draw和logic兩個方法,這兩個方法一個負責開始菜單的繪製,一個負責開始菜單的邏輯。
下面是Menu完整的實現代碼:
public class Menu {
private final Image[] IMG_GUID ={
new ImageIcon("images/guid1.png").getImage(),
new ImageIcon("images/guid2.png").getImage(),
new ImageIcon("images/guid3.png").getImage(),
};
private final int MENU_STATE_1 = 0;
private final int MENU_STATE_2 = 1;
private final int MENU_STATE_3 = 2;
private int MENU_STATE=0;
private int count;
public void draw(Graphics g) {
g.drawImage(IMG_GUID[MENU_STATE], 0, 0, null);
}
public void logic() {
count++;
if(count%4==0) {
MENU_STATE++;
}
if(MENU_STATE>=3) {
MENU_STATE=0;
}
}
}
看到IMAGE_GUID這個Image數組了嗎?這裏我們先介紹下java如何製作動畫效果。
如何產生動畫
IMG_GUID是一系列圖片,可以從下載的資源發現,這系列圖片就是一個動畫的每一幀。當我們按順序播放他們時,就有了動畫的效果。
MENU_STATE表示當前播放到了第幾幀。在logic裏面,改變他的值,這麼count每一個自增,每個4的倍數改變MENU_STATE,也就是主循環每循環4次(還記得主循環延遲50ms嗎?),間隔200ms播放下一幀圖片。
現在,我們可以運行查看一下效果。
至此我們的開始菜單就完成了,你可能要問,那切換界面呢?還記得上一篇介紹的gameState嗎?在開始菜單的GAME_STATE_MENU下,按下鼠標左鍵,就是把gameState設置爲GAME_STATE_PLAYING,此時我們的開始菜單在主循環中,draw和logic都不會再調用了,也就實現了點擊開始遊戲的功能。
好的,開始菜單就是這麼簡單,下一篇,我們開始做遊戲界面的滾動背景。