2016-08-11 94 views
1

自從我編寫任何代碼以來已經有好幾年了,現在我需要選擇p5.js。作爲練習,我試圖做一個簡單的繪圖程序 - 我希望我的程序在默認情況下繪製黑色,並且當我點擊屏幕角落中的紅色矩形時,將顏色切換爲紅色。我有以下非常草率的代碼(我知道鼠標按鍵不完全與紅色矩形對齊,「繪圖」機制不是最好的,等等。我只是在亂搞它)at在連續函數中引用全局變量(p5.js)

function setup() { 
 
\t createCanvas(600, 600); 
 
\t fill ('red'); 
 
    \t rect(570,20,5,5); 
 
    //creates red rectangle at top right corner of screen 
 

 
} 
 
var color = 0; 
 
function mousePressed(){ 
 
\t if (mouseX > 570) { 
 
    \t \t if(mouseY > 20){ 
 
    \t \t \t color = 4; 
 
    \t \t \t ellipse (10,20,50,50); 
 
    \t \t } 
 
    \t \t 
 
    \t } 
 
} 
 
function draw() { 
 
\t 
 
    stroke(color); 
 
    if (mouseIsPressed) { 
 
    \t ellipse(mouseX, mouseY, 1, 1) 
 
    \t //creates colored dot when mouse is pressed 
 
    } 
 
} 
 

 
function keyTyped(){ 
 
\t if (key === 'c'){ 
 
\t \t clear(); 
 
\t } 
 
}

如果我不使用「顏色」變量,而不是僅僅行程設置爲0,我可以在黑色的不夠好畫。 mousePressed函數似乎可以工作 - 當我按下矩形時,它繪製了我放入的橢圓進行測試。但是,我似乎無法在繪圖函數中引用var'color' - 這可能是一個愚蠢的問題,但我承認會被困住!我究竟做錯了什麼?

回答

1

命名變量時必須小心。具體而言,你不應該將它們命名爲與現有函數相同的東西!

the Processing.js help articles

之一的JavaScript的強大功能是它的動態,無類型性質。像Java這樣的類型化語言,因此處理,可以重用名稱而不用擔心模糊(例如,方法重載),Processing.js不能。在不涉及JavaScript的內部工作的情況下,Processing開發人員的最佳建議是不使用函數/類/等。來自Processing的名稱作爲變量名稱。例如,一個名爲line的變量可能看起來很合理,但它會導致Processing和Processing.js中內置的類似命名的line()函數出現問題。

Processing.js是JavaScript,所以函數可以存儲在變量中。例如,color變量是color()函數!因此,當您創建自己的color變量時,您將覆蓋該變量,因此您失去調用color()函數的能力。

最簡單的解決方法是將您的color變量的名稱更改爲myColor之類的名稱。