Создайте простой обратный отсчет при обработке

Я искал так много сайтов в Google, чтобы попытаться заставить это работать, но NO ONE, похоже, не имеет этого в любом месте, и если они делают это просто НЕ работает с моей программой … То, что я пытаюсь достичь, – это иметь игрока отдайте, что, когда игрок получает удар, у него есть «x» количество времени между ударом в первый раз и во второй раз.

Таким образом, у меня есть Boolean "hit" = false и когда он получает удар, он изменяется на true . Это означает, что он не может получить удар снова, пока он не изменится на false снова.

Поэтому я пытаюсь настроить функцию в своей программе, чтобы установить «таймер» для «х» количества секунд. IF hit = true и как только этот таймер достигнет «х» количества секунд, хит снова переключится на false.

У кого-нибудь есть идеи?

Благодаря!!

Простой вариант – вручную отслеживать время с помощью millis () .

Вы бы использовали две переменные:

  1. один для хранения прошедшего времени
  2. один для сохранения времени ожидания / задержки

В методе draw () вы должны проверить, является ли разница между текущим временем (в миллисекундах) и ранее сохраненным временем больше (или равна) задержке.

Если это так, это поможет вам сделать что-либо за задержку и обновить сохраненное время:

 int time; int wait = 1000; void setup(){ time = millis();//store the current time } void draw(){ //check the difference between now and the previously stored time is greater than the wait interval if(millis() - time >= wait){ println("tick");//if it is, do something time = millis();//also update the stored time } } 

Вот небольшая вариация, которая обновляет «иглу» на экране:

 int time; int wait = 1000; boolean tick; void setup(){ time = millis();//store the current time smooth(); strokeWeight(3); } void draw(){ //check the difference between now and the previously stored time is greater than the wait interval if(millis() - time >= wait){ tick = !tick;//if it is, do something time = millis();//also update the stored time } //draw a visual cue background(255); line(50,10,tick ? 10 : 90,90); } 

В зависимости от ваших настроек / потребностей вы можете обернуть что-то подобное в class, который можно использовать повторно. Это базовый подход и должен работать с версиями Android и JavaScript (хотя в javascript у вас есть setInterval ()).

Если вы заинтересованы в использовании служебных программ Java, как предположил FrankieTheKneeMan, есть class TimerTask, и я уверен, что есть много ресурсов / примеров.

Вы можете запустить демонстрационный пример:

 var time; var wait = 1000; var tick = false; function setup(){ time = millis();//store the current time smooth(); strokeWeight(3); } function draw(){ //check the difference between now and the previously stored time is greater than the wait interval if(millis() - time >= wait){ tick = !tick;//if it is, do something time = millis();//also update the stored time } //draw a visual cue background(255); line(50,10,tick ? 10 : 90,90); } 
  
  • Как использовать class Timer для вызова метода, сделать что-то, сбросить таймер, повторить?
  • Давайте будем гением компьютера.