簡単なオプションは、millis()を使用して手動で時間を追跡することです。
次の 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);
}
セットアップ/ニーズに応じて、このようなものを再利用可能なクラスにラップすることを選択できます。これは基本的なアプローチであり、Android および JavaScript のバージョンでも機能するはずです (ただし、javascript では setInterval() があります)。
FrankieTheKneeMan が提案したように、Java のユーティリティの使用に興味がある場合は、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);
}
<script src="https://cdnjs.cloudflare.com/ajax/libs/p5.js/0.4.4/p5.min.js"></script>