2017-03-02 5 views
1

みんな。私は初心者ですので、私の無知を許してください。私は基本的に条件に応じてmouseXの登録をやめたいと思っています。赤い領域があり、その領域の内部に黄色の円があるとします。カーソルが赤い領域の内側にあるときは、円がmoseX座標を(y軸の位置を維持して)追跡するようにしたいが、円がその領域を離れるとすぐに円を「覚えている」ようにする。条件に応じて処理中のmouseXトラッキングを停止します

ここで私が何をしようとしたコードです:

void setup() 
{ 
    size(500, 500); 
} 

void draw() 
{ 
    background(255); 
    noStroke(); 
    fill(#F05757); 
    quad(0, 0, 300, 0, 300, 200, 0, 200); 
    fill(#EDF057); 
    ellipse(motion(),100,40,40); 
} 

int motion() 
{ 
    int currentXValue = 0; 
    int savedXValue = currentXValue; 

    if (mouseX > 0 && mouseX < 300 && mouseY > 0 && mouseY < 200) 
    { 
    currentXValue = mouseX; 
    savedXValue = currentXValue; 
    } else {} 

    return savedXValue; 
} 

カーソルが、私は円が戻ってX = 0に行きたくない赤の領域を離れたとき、私はそれを維持したいが、最後に保存されたx座標。変数currentXValueをmouseXを追跡するようにして、カーソルが赤い領域を離れるときの座標を記憶するようにsaveXValueを作成しようとしました。

答えて

0

currentXValue変数をdraw()ループ内に作成し、それを0に設定します。次に、マウスが赤い領域の内側にある場合のみ変更します。

変数currentXValueの以前の値を記録する必要があります。言い換えれば、あなたはスケッチレベルで、motion()関数の外で変数を定義する必要があります。

int currentXValue = 0; 

void setup() 
{ 
    size(500, 500); 
} 

void draw() 
{ 
    background(255); 
    noStroke(); 
    fill(#F05757); 
    quad(0, 0, 300, 0, 300, 200, 0, 200); 
    fill(#EDF057); 
    ellipse(motion(), 100, 40, 40); 
} 

int motion() 
{ 

    int savedXValue = currentXValue; 

    if (mouseX > 0 && mouseX < 300 && mouseY > 0 && mouseY < 200) 
    { 
    currentXValue = mouseX; 
    savedXValue = currentXValue; 
    } else { 
    } 

    return savedXValue; 
} 

currentXValuedraw()関数の呼び出しの間持続します。 savedXValueは不要です。

恥知らずな自己宣伝:私はhere利用可能な処理にアニメーションのチュートリアルを書きました。

+0

ありがとうございました!それはまさに私がやろうとしていたことです。私はあなたのチュートリアルを完全にチェックします! – Lambientan

関連する問題