[英]My loop isn't drawing anything to the screen
我在使用簡單的while循環時遇到困難。
size(500,500);
background(255);
rectMode(CENTER);
noCursor();
int x1 = mouseX;
int y1 = mouseY;
int count = 0;
fill(0);
rect(250,250,50,50); //this is drawn
while (count == 0); {
fill(0);
rect(250,250,50,50); //this is not
}
它寫在Processing。 我在while循環中沒有的任何東西都沒有繪制,而在循環之后的任何東西都沒有。 繪制之前的所有內容(不是循環的)。 我在這里想念什么?
您的while循環中有一個錯字,您有一個;
這將結束while循環而不會執行,請使用以下方式替換while循環:
while (count == 0) {
fill(0);
rect(250,250,50,50); //this is not
}
在處理中,您不應該像執行操作那樣創建無限循環,您可以編寫一個draw()
函數來完成類似的工作:
void draw() {
fill(0);
rect(250,250,50,50); //this is not
}
這需要與setup()
函數一起使用,setup函數僅在程序開頭運行一次:
int x1,y1;
void setup(){
size(500,500);
background(255);
rectMode(CENTER);
x1 = mouseX;
y1 = mouseY;
fill(128);
rect(250,250,50,50); //this is drawn
}
void draw(){
fill(0);
rect(250,250,50,50); //this is not
}
也許您不熟悉處理方法,但是您應該考慮使用此布局,因為它是框架的核心。
另一個答案是正確的一半。 您的while
循環以;
結尾;
分號,因此它將不做任何事情就不斷循環。
我們一直在使用draw()函數,但是這一次需要使用我們自己的循環在屏幕上繪制對象。 為什么我不應該使用無限循環? 它不是完成同一件事嗎?
不會。即使您解決了分號問題,您仍然永遠不會在屏幕上看到任何內容。 這是因為僅在代碼完成時才在屏幕上顯示內容! 如果您具有draw()
函數,則僅顯示在draw()
函數的末尾。 如果您不這樣做,則僅在程序末尾顯示。 無限循環會阻止任何內容顯示在屏幕上。
但是,您不必具有setup()
和draw()
函數。 您就是不可能有無限循環。 (如果您確實具有draw()
函數,則情況也是如此,順便說一句。)
請注意, while
循環中的代碼實際上並沒有更改,因此您可以刪除while
部分。 但也請注意,不使用draw()
函數運行代碼意味着mouseX
和mouseY
始終為0
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.