Processing 如何添加+;在处理过程中每10秒1到变量?

Processing 如何添加+;在处理过程中每10秒1到变量?,processing,milliseconds,Processing,Milliseconds,请原谅我的无知,但我遇到了一个问题,这个问题对我目前的处理编程知识来说是一个挑战,尽管这个想法很简单。你看,我需要每10秒给一个变量加1个单位。代码如下: inti=0; 无效设置() { 帧率(60); } 作废提款() { 整数时间=(毫秒()%10000)/1000; 如果(时间==9) { i++; }else{} System.out.println(“------------------------------------\n”+ 计时器:“+time+”\n +每10秒添加1::“

请原谅我的无知,但我遇到了一个问题,这个问题对我目前的处理编程知识来说是一个挑战,尽管这个想法很简单。你看,我需要每10秒给一个变量加1个单位。代码如下:

inti=0;
无效设置()
{
帧率(60);
}
作废提款()
{
整数时间=(毫秒()%10000)/1000;
如果(时间==9)
{
i++;
}else{}
System.out.println(“------------------------------------\n”+
计时器:“+time+”\n
+每10秒添加1::“+i+”\n
+ "-------------------------------");
}
问题是,因为
draw()
每秒循环60次,所以只要
时间
达到9秒,它最后一次执行
if
语句60次,并且每10秒向
i
添加60次,我只需要添加1

我尝试应用某种算法,当不必要的数字增加时,减去它们,如下所示:

inti=1;
int-toSubstract=0//算法变量
无效设置()
{
帧率(60);
}
作废提款()
{
整数时间=(毫秒()%10000)/1000;
如果(时间==9)
{
i++;
algToSubstract();
}else{}
System.out.println(“------------------------------------\n”+
计时器:“+time+”\n
+每10秒添加1::“+i+”\n
+ "-------------------------------");
}
void algToSubstract()//59)
{
toSubstract=0;
}else{}
}
…但我不能让它工作。这个想法是这样的:

时间
达到9,
如果执行
语句,
i
=1和
toSubstract
=0

i
增加1,因此
i
=2

i=i-toSusbract
i
=2-0所以
i
=2)

toSusbract
增加1,因此
toSusbract
=1

i
增加1,因此
i
=3

i=i-toSusbract
i
=3-1所以
i
=2)

toSusbract
增加1,因此
toSusbract
=2

。。。过程继续

toSubstract
大于59,因此它重新启动为0


time
停止为9。

您可以将最后的秒数存储在静态(或全局)变量中,并且当当前秒数高于
oldsecs

void draw() {
    static int oldsecs = 0;
    int secs = millis() / 1000;
    if (secs > oldsecs) {
        i++;
        oldsecs = secs;
    }
    ...

假设语言是C,并且int类型没有溢出秒数。

Ringo有一个非常好的解决方案

另一种简单的方法是:

bool addOnce=false;
作废提款()
{
整数时间=(毫秒()%10000)/1000;
如果(时间==9)
{
如果(!addOnce){
addOnce=true;
i++;
}
}else{addOnce=false;}
}
只要
time==9
,只要(!addOnce)一次,我们就只能通过


更改后,我们重新设置标志。

其他答案是很好的通用方法,但它们没有利用处理为您提供的功能

例如,您可以使用
frameCount
变量检查经过了多少帧。由于每秒调用60次
draw()
,因此10秒等于600帧。大概是这样的:

void draw(){
如果(帧数%600==0){
//10秒过去了
}
}
另一种方法是存储最近10秒过去的时间,然后对照当前时间检查是否从那时起已经过去了10秒。大概是这样的:

int-previousTime=0;
作废提款(){
如果(毫秒()>previousTime+10*1000){
//10秒过去了
以前的时间=毫秒();
}
}

更多信息可在中找到。

该语言正在处理中。注意标签。