2016-10-03 1 views
0

矩形が動いています。クリックすると、3ではなく0.1に移動する必要があります。私は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; 
} 

答えて

-1

これはすべてちょっとしたことです。どのくらいの頻度でdraw()が呼び出されますか?すべてのフレームで?一般的には描画関数で調整するのは悪い考えですが、描画するだけです。あなたはおそらく、マウスアップで3.0に戻ってそれを置きたいと思うしかし、やや

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 
} 

それをハックする

。あなたはそのイベントを傍受する方法を知るのに十分な情報が与えられていないので、 はありません。

0

あなただけdraw()関数内ifの文と一緒にmousePressed変数を使用することができます。

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; 
} 
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; 
} 
関連する問題