如何让这个矩形变慢?

时间:2016-10-03 01:38:34

标签: processing

矩形正在移动,当我点击它时需要以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; 
}

3 个答案:

答案 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。你还没有 给出足够的信息以了解如何拦截该事件。