我使动画分步进行,而不是连续进行。矩形应该在屏幕上向下移动8个步骤,这意味着每个步骤90像素,我希望能够在不使用framerate()
的情况下看到这些步骤。
int x = 0;
int y = 0;
int dy = 1;
boolean OrangeSquare = true;
void setup() {
size(1280, 720);
surface.setResizable(true);
dy = (height/32);
}
void draw() {
background(240, 240, 240);
fill(255, 147, 79);
rect(x, y, width/14.222222222, height/8);
if (OrangeSquare) {
y += dy;
}
if (y + height/8 > height || y < 0) {
dy *= -1;
}
}
如果矩形应以8步上下移动,则使用步骤索引step_i
。矩形的y
坐标取决于索引:
int y = step_i*height/8;
rect(x, y, height/8, height/8);
如果索引为<= 0或> = 7则更改方向:
step_i += dy;
if (step_i <= 0 || step_i >= 7) {
dy *= -1;
}
如果要减慢该过程的速度,则必须等待一段时间,然后再执行下一步。自启动程序以来,使用millis()
获取毫秒数(千分之一秒)。每次当正方形走动时,计算允许正方形进行下一步的下一个时间点:
millis()
long stepTime = 0;
示例代码:
long currentTime = millis();
if (move == true && currentTime > stepTime) {
stepTime = currentTime + 500; // 500 milliseconds = 0.5 seconds
// [...]
}