使动画分步进行,而不是连续进行

问题描述 投票:0回答:1

我使动画分步进行,而不是连续进行。矩形应该在屏幕上向下移动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;
  }
}
java processing
1个回答
0
投票

如果矩形应以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

    // [...]
}
© www.soinside.com 2019 - 2024. All rights reserved.