2016-11-04 38 views
0

我想要做的只是改變我點擊的像素的顏色。所以有兩個狀態;獲取處理3上點擊點的座標

鼠標單擊

鼠標點擊不

我使用下面的代碼;

boolean myBol = false ; 
void setup(){ 
    size(860,640); 
    background(0); 
} 
void draw(){ 
    if (mousePressed) { 

    if(myBol == true){myBol = false;} else {myBol = true;} 

    } 

    if (myBol == true){ 
    stroke(255); 
    point(mouseX,mouseY); 
}} 

當我第一次運行此代碼後點擊保存繪製在以往任何時候我移動鼠標,但我要的是; 「每次點擊屏幕時繪製」。 enter image description here

+0

你沒有顯示所有代碼。 'clickx','clicky'和'mousePressed'從哪裏得到它們的值? – Raniz

+0

很抱歉,關於clikcx和clicky只是沒有使用,我會刪除它們。 mousePressed是Processing 3中的一個布爾值,我沒有填充它。 – bukowski

+0

您有一個條件可以在點擊時切換myBol的狀態。因此,再次點擊一個將停止繪圖,再次點擊繪製更多,...你只需要檢查'if(mousPressed)繪製...我看不到myBol需要在這裏 – AxelH

回答

1

您的支票情況不正確。

if (mousePressed) { 
    if(myBol == true){ 
     myBol = false; 
    } else { 
     myBol = true; 
    } 
} 

或basicly

if (mousePressed) 
    myBol = !myBol 

會改變每一次點擊myBol值。

既然你想畫點擊,不需要這個值。直接使用mousePressed值

if (mousePressed) { 
    stroke(255); 
    point(mouseX,mouseY); 
} 
0

你有額外的邏輯,沒有多少意義。當你已經有mousePressed變量時,爲什麼你需要myBol?你不能只是簡化你的邏輯是:

void setup() { 
    size(860, 640); 
    background(0); 
} 

void draw() { 
    if (mousePressed) { 
    stroke(255); 
    point(mouseX, mouseY); 
    } 
} 

或者你可以使用鼠標事件的功能,像這樣:

void setup() { 
    size(860, 640); 
    background(0); 
} 

void mousePressed() { 
    stroke(255); 
    point(mouseX, mouseY); 
} 

void mouseDragged() { 
    stroke(255); 
    point(mouseX, mouseY); 
} 

void draw() { 
} 

此外,boolean值可以直接使用,並與運營商,所以這樣的:

boolean example; 
if(example == true){example= false;} else {example= true;} 

可以使用運營商縮短到眼前這個:

boolean example; 
example = !example; 

這:

if(example == true) 

可以縮短到這一點:

if(example)