2016-12-12 19 views
0

私は非常に簡単なゲームを作ろうとしていましたが、マウスイベントに問題があります。一度だけクリックするとキャンバス全体がクリアされますが、もうクリックしないと元のキャンバスに戻ります。ワンクリックでキャンバスをクリアするにはどうすればよいですか?

if((mouseX >= 100) && (mouseX <= 235) && 
    (mouseY >= 490) && (mouseY <= 540) && 
    (mousePressed)) 
{ 
    clear(); 
    slide1(); 
} 

これは2番目のタブです:

void slide1() 
{ 
    clear(); 
    background (30);`enter code here` 
    slide1 = loadImage ("slide1.jpg"); 
    image (slide1,100,0,400,300); 
} 
+0

@ホームチェック処理タグ情報 –

+0

@JonathanRaeCrisanto 'clear()'はどのように実装されていますか?draw()はどうなりますか? –

+0

@georgeprofenza:ups:このタグは言語に関するものではありません... – home

答えて

0

完了し、作業の例を見ることなく、確実に伝えることは困難です。ただし、clear()background()を混同している可能性があります。画面を一掃する最も簡単な方法は、たとえばすべてのdraw()フレームの先頭にあるbackground()を呼び出すことです。

clear()Processing referenceから

は、「この機能は、通常のドロー内で使用される()クリアする:

background() "バッファ内のピクセルをクリアします。この機能はのみPGraphics上で動作オブジェクト"表示ウィンドウは各フレームの先頭にありますが、アニメーションの最初のフレームにバックグラウンドを設定するためにsetup()内で、またはバックグラウンドを1回だけ設定する必要がある場合に使用できます。

(あなたのコードに基づいて):

PImage slide1; 
void setup(){ 
    size(512,512); 
    slide1 = loadImage ("https://processing.org/img/processing3-logo.png"); 
} 
void draw(){ 
    background (30); // clear screen every frame 
    if(mousePressed) { // show image whenever mouse is down 
    image (slide1,0,0); 
    } 
} 

これは常にキャンバスをクリアします。

代わりに、クリックでキャンバスをワイプしたい場合は、それぞれの描画を背景にしないでください。代わりに、mousePressedでのみ背景を呼び出します。しかし、あなたのケース(画像を表示)では、mouseReleased(画像が消えるように)を再び拭きたいかもしれないようです。このために組み込みのおよびmouseReleased()処理関数を使用し、それぞれにバックグラウンドを呼び出すことができます。

私は、これはあなたが実際に何をしたいと思いますが、しません:タイトルの質問(「?どうやって処理にワンクリックを使用してキャンバスをクリアすることができます」)への実際の答えは次のとおりです。

void draw(){ 
line(mouseX,mouseY,pmouseX,pmouseY); 
} 
void mouseClicked(){ 
    background(192); 
} 
関連する問題