矩形正在移动,当我点击它时需要以0.1而不是3移动。我不知道如何编写mousePressed部分以使其始终保持在0.1。
float stripeX = 0;
void setup() {
size(500, 300);
}
void draw() {
background(255);
fill(10, 10, 100);
rect(stripeX, 90, 150, 250);
stripeX = stripeX + 3;
stripeX = stripeX % width;
}
void mousePressed() {
stripeX = stripeX - 2.9;
}
答案 0 :(得分:0)
您可以在mousePressed
函数中使用if
变量和draw()
语句:
float stripeX = 0;
void setup() {
size(500, 300);
}
void draw() {
background(255);
fill(10, 10, 100);
rect(stripeX, 90, 150, 250);
if(mousePressed){
stripeX = stripeX + .1;
}
else{
stripeX = stripeX + 3;
}
stripeX = stripeX % width;
}
答案 1 :(得分:0)
在您的情况下,最好的方法是使用mouseReleased()方法:
float stripeX, deltaX;
void setup() {
size(500, 300);
stripeX = 0f; // init values here, in setup()
deltaX = 3f;
}
void draw() {
background(255);
fill(10, 10, 100);
rect(stripeX, 90, 150, 250);
stripeX += deltaX;
stripeX = stripeX % width;
}
void mousePressed(){
deltaX = 0.1;
}
void mouseReleased(){
deltaX = 3f;
}
答案 2 :(得分:-1)
这有点冒险。 draw()多久被调用一次?在每一帧?通常,在绘制函数中调整事物是一个坏主意,它应该只是绘制。
稍微破解它
float stripeX = 0;
float deltaX = 3.0;
void draw()
{
//omitted some code
stripeX += deltaX;
}
void mousePressed()
{
if(deltaX > 0.1)
deltaX = 0.1;
else
deltaX = 3.0; // let a second press put it back to 3.0
}
但是你可能想在鼠标上将它恢复到3.0。你还没有 给出足够的信息以了解如何拦截该事件。