【发布时间】:2016-05-06 13:40:46
【问题描述】:
我有一个由两个 for() 循环生成的椭圆网格。我想做的是在 mousePressed == true 时将所有这些椭圆简化为 mouseX 和 mouseY,否则返回它们在网格中的位置。我该怎么办?我从这个模板开始,它不起作用,因为我不知道如何影响椭圆的位置,但是设置了缓动。
float x;
float y;
float easeIn = 0.01;
float easeOut = 0.08;
float targetX;
float targetY;
void setup() {
size(700, 700);
pixelDensity(2);
background(255);
noStroke();
}
void draw() {
fill(255, 255, 255, 80);
rect(0, 0, width, height);
for (int i = 50; i < width-50; i += 30) {
for (int j = 50; j < height-50; j += 30) {
fill(0, 0, 0);
ellipse(i, j, 5, 5);
if (mousePressed == true) {
// go to mouseX
targetX = mouseX;
// ease in
float dx = targetX - x;
if (abs(dx) > 1) {
x += dx * easeIn;
}
//go to mouseY
targetY = mouseY;
// ease in
float dy = targetY - y;
if (abs(dy) > 1) {
y += dy * easeIn;
}
} else {
// return to grid
targetX = i;
// ease out
float dx = targetX - x;
if (abs(dx) > 1) {
x += dx * easeOut;
}
// return to grid
targetY = j;
// ease out
float dy = targetY - y;
if (abs(dy) > 1) {
y += dy * easeOut;
}
}
}
}
}
任何帮助将不胜感激。我不确定按什么顺序做事/循环中应该包含哪些元素。
谢谢!
【问题讨论】:
标签: animation for-loop processing easing