簡體   English   中英

我的循環沒有在屏幕上畫任何東西

[英]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()函數運行代碼意味着mouseXmouseY始終為0

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM