2012-11-26 18 views
0

我正在嘗試將actionlistener鏈接到我正在寫的遊戲的計時器。每當定時器觸發時,2D陣列中的怪物隨機移動到一個相鄰的瓷磚。陣列並不完全充滿怪物。沒有怪物的地方,我的數組有空。我該如何將actionlistener應用於我的計時器?

這是我到目前爲止有:

private class MonsterListener implements ActionListener { 
    public void actionPerformed(ActionEvent e) { 
     for (int i = 0; i < Level.SIZE; i++) { 
      for (int j = 0; j < Level.SIZE; j++) { 
       if (monsters[i][j] != null) { 
        monsters[i][j].update(); 
       } 
      } 
     } 
     updateState(); 
    } 
} 

我的怪物類中:

public void update() { 
     rand1 = new Random(); 
     rand2 = new Random(); 
     drow = rand1.nextInt(3); //random int 0,1,2 
     dcol = rand2.nextInt(3); //random int 0,1,2 
     drow -= 1; //random int -1,0,1 
     dcol -= 1; //random int -1,0,1 

     row += drow; 
     col += dcol; 
    } 

當我創建我的定時器,我這樣做

public final int DELAY = 1000; 
Timer myTimer = new Timer(DELAY, new MonsterListener()); 

然而,我不斷收到錯誤消息

cannot find symbol 
symbol : constructor Timer(int,Game.MonsterListener) 
location: class java.util.Timer 
    myTimer = new Timer(DELAY, listener); 
        ^

回答

2

我認爲你需要使用的javax.swing.Timer代替java.util.Timer

[我懷疑這是因爲您使用ActionListener]

+0

我相信你是對的!關於此問題的另一個問題。有沒有什麼辦法從同一個項目的另一個類訪問這個定時器?我希望我的GUI在每次這個計時器觸發時都更新,但計時器不在面板類中我有更新GUI,所以在我的面板類中有什麼方法可以說「當計時器觸發時,執行此操作......「? – user1850008

+0

我不確定我是否完全瞭解您的項目組織。但是,如果要將計時器與面板的每個實例相關聯,則可以在面板的構造函數中創建並設置計時器。 –

相關問題