2013-12-14 3 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' для (почти) чего угодно с графическим интерфейсом. Чтобы лучше помочь, опубликуйте [SSCCE] (http://sscce.org/). –

ответ

0

В общем пытается отменить таймеры или другие потоки снаружи нить плохая идея и приводит ко всем видам проблем.

Лучше всего установить какой-то флаг или счетчик, который TimerTask проверяет, когда дело доходит до запуска.

Смежные вопросы