2012-09-18 81 views
1

如題,我想和處理來實現:處理:如何使鼠標點擊功能因點擊次數而異?

有在屏幕上跨越運行,那麼經典的圓圈:

第一次點擊鼠標各界凍結(停止移動);

第二次單擊鼠標時,用鼠標位置繪製一個新的圓。

問題是:如何告訴計算機採取不同的行爲?畢竟,他們都是點擊,對電腦看起來都一樣。

我正在考慮檢測處理中是否已發生某些事情(如第一次單擊)。如果無法完成,我可以使用JavaScript來做到這一點嗎?無論如何,我想把它放在瀏覽器上。

有人知道嗎?非常感謝你。

回答

1

我認爲這主要取決於你如何設想交互。它可以像你認爲合適的那樣簡單或複雜。

如果有幫助,這裏有幾個想法:

1.使用不同的mouse buttons不同的動作(如定期/左鍵點擊產生一個新的圈子,右鍵單擊現有圈子到所需的位置移動):

void draw(){ 
    color bg = color(0); 
    if(mousePressed){ 
    if(mouseButton == LEFT) bg = color(192,0,0); 
    if(mouseButton == CENTER) bg = color(0,192,0); 
    if(mouseButton == RIGHT) bg = color(0,0,192); 
    } 
    background(bg); 
} 

2.使用按鈕和組合鍵。例如,一個SHIFT+CLICK做了單獨行動,而不是默認:點擊

void draw(){ 
    color bg = color(0);//default 
    if(mousePressed && keyPressed && keyCode == SHIFT) bg = color(255,192,0);//shift+click 
    background(bg); 
} 

3.請保持跟蹤和使用的點擊次數的提示,不同的狀態:

int numClicks = 0; 

void draw(){ 
    background(numClicks*25); 
} 
void mousePressed(){ 
    numClicks++; 
    if(numClicks > 10) numClicks = 0;//reset after 10 'states'/different clicks 
} 

此,作爲一個相互作用可能不太直觀。在我看來,更簡單的事情(特別是對用戶來說)越好越好。

HTH

+0

哇再次就是你!謝謝你sooooooo了! – kikkpunk

+0

嘿,我可以檢測處理中是否發生了某些事情(如第一次點擊)?如果沒有,我可以使用JavaScript來做到這一點?無論如何,我想把它放在瀏覽器上。 – kikkpunk

+0

我遵循處理問題,所以我再次:)我不是什麼意思的「已經發生的事情」?如果您想跟蹤點擊次數,那麼就是上面的例子(使用'numClicks')。該代碼也適用於Processing.js。最簡單的測試方法是將該代碼片段粘貼到[Sketch.Processing](http://sketch.processing.org/)並嘗試。還有其他處理網絡「遊樂場」,如[SketchPatch](http://sketchpatch.net/),[HasCanvas](http://hascanvas.com/)或[SketchPad](http:// sketchpad)。cc /) –

0

如果我理解正確的話,你問「我怎麼可以跟蹤的狀態。」也就是說,要知道是「凍結」還是「畫圈」。

你可以用一個簡單的變量做到這一點:

boolean freezeState = false; 


void mousePressed(){ 

if (freezeState == false){ 
    freezeState = true; 

    // call method to freeze circles 

else if (freezeState == true){ 
    freezeState = false; 

    // call method to draw circle 
} 
+0

'if(freezeState == false){freeze_State = true; //調用凍結圓圈的方法 否則if(freezeState == true){ freezeState = false; '也可以寫成'freezeState =!freezeState' - 這是你'切換'一個布爾值的典型方式。 –

+0

@GeorgeProfenza - 是的,謝謝。我展開了它,因爲OP目前似乎還沒有太多經驗,而詳細的方法可能更易於理解。 –

+0

明智的決定:) –