Javascript Processing.js计时器
我正在使用Processing.js开发一个应用程序 在绘图循环中的每一步,我都将帧数增加一个Javascript Processing.js计时器,javascript,timer,processing.js,Javascript,Timer,Processing.js,我正在使用Processing.js开发一个应用程序 在绘图循环中的每一步,我都将帧数增加一个frame++ 我想知道有多少时间过去了。目前,为了获得经过的时间(知道我的应用程序设置为以60FPS运行),我喜欢这样做:time=frame/60。但这只有在应用程序始终以精确的FPS运行时才有效,我们都知道情况并非如此,因为它取决于用户的硬件 我希望计时器非常准确(只有0.0001秒的误差) 建议一些javascript算法来计算now()和start_time()之间的差异也很受欢迎。您可以将开
frame++
我想知道有多少时间过去了。目前,为了获得经过的时间(知道我的应用程序设置为以60FPS运行),我喜欢这样做:time=frame/60
。但这只有在应用程序始终以精确的FPS运行时才有效,我们都知道情况并非如此,因为它取决于用户的硬件
我希望计时器非常准确(只有0.0001秒的误差)
建议一些javascript算法来计算now()和start_time()之间的差异也很受欢迎。您可以将开始时间存储在一个变量中 然后根据需要创建一个新计时器,并从中减去开始时间变量。。 结果将是以毫秒为单位的差值 您还可以使用实际时间除以帧计数器来获得应用程序的准确平均帧速率 差不多
var startTimer = new Date(); // at start (once)
只要你想查一下
var passed = new Date() - startTimer; // in milliseconds
演示在如果您想要准确,请查看。但是,并非所有浏览器都提供此功能
此外,Processing.js还有一个名为frameCount的内置只读变量。你可以查询它,而不是自己计算帧。我为一个游戏编了这个类。它使用
millis()
,并且独立于帧速率
class Timer{
boolean increment, inProgress;
int spawn, end;
int seconds, tm_limit;
Timer(int tm_limit){
this.tm_limit = tm_limit;
seconds = tm_limit;
increment = false;
inProgress = false;
}
Timer(){
seconds = 0;
increment = true;
inProgress = false;
}
void start(){
inProgress = true;
spawn = millis();
}
void stop(){
inProgress = false;
end = millis();
}
int getSeconds(){
if(inProgress){
if(increment){
seconds = int((millis() - spawn) / 1000);
}
else{
if(seconds - int((millis() - spawn) / 1000) != seconds){
seconds = seconds - int((millis() - spawn) / 1000);
if(seconds <= 0) { stop(); }
else spawn = millis();
}
}
}
return seconds;
}
void reset(){
if(!increment)
seconds = tm_limit;
else
seconds = 0;
inProgress = false;
}
}
类计时器{
布尔增量,inProgress;
int繁殖,结束;
整数秒,tm_限制;
计时器(int tm_限制){
此.tm_极限=tm_极限;
秒=tm_极限;
增量=假;
inProgress=假;
}
计时器(){
秒=0;
增量=真;
inProgress=假;
}
void start(){
inProgress=true;
spawn=millis();
}
无效停止(){
inProgress=假;
结束=毫秒();
}
int getSeconds(){
如果(正在进行){
如果(增量){
秒=整数((毫秒()-spawn)/1000);
}
否则{
if(秒-int((毫秒()-spawn)/1000)!=秒){
秒=秒-整数((毫秒()-spawn)/1000);
如果(秒)