2013-12-14 123 views
0

我想設置一個計時器來隨機設置屏幕中的幀,但隨後,根據boolean,將其設置恢復正​​常。我已經試過.cancel()但它不起作用。我怎麼能馬上停止這種計時器?:遊戲計時器不會停止

if(e.getSource()==impossible){ 

      impossiblity=!impossiblity; 
      System.out.println(impossiblity); 
      if(!impossiblity){ 
       new Timer().schedule(new TimerTask() { 
        public void run() { 
         int randWidth=(int)((dim.width-gameFrame.getSize().width) * Math.random()); 
         int randHeight=(int)((dim.height-gameFrame.getSize().height) * Math.random()); 
         gameFrame.setLocation(randWidth, randHeight);//sets location to center 
        } 
       }, 1000, 1000); 
      } else gameFrame.setLocation(dim.width/2-gameFrame.getSize().width/2, 0);//sets Location to center of screen 
     } 

它設置gameframe恢復正常但是隨後右後衛隨機

+0

對於初學者來說,你有兩個看起來無處不在的布爾值 - 「不可能」和「不可能性」...... – Makoto

+0

對不起,我沒有包括這個 – user3063455

+0

更好地使用Swing Timer用GUI做。爲了更快地獲得更好的幫助,請發佈[SSCCE](http://sscce.org/)。 –

回答

0

一般試圖取消來自外部的線程是計時器或其他線程一個不好的想法,並導致各種問題。

最好的辦法是設置某種標誌或計數器,以便TimerTask在運行時檢查。