2013-02-27 23 views
0

我有代碼改變PShape的顏色和不透明度,我正在調試它,我99%肯定所有的方法工作。我做了一個延遲方法,因爲Processing不再有內置的延遲方法。當我調試它時,我注意到它只會在完成所有延遲調用後畫出它應該達到的內容(當沒有更多延遲時,它將繪製最新版本的PShape)。所以我看着我的延遲方法,我搞砸了,但仍然沒有正確的結果。有人可以試着向我解釋爲什麼PShape沒有更新?處理繪製()方法使用不起作用

編輯*我收到了一個回答,告訴我使用noLoop(),我用Google搜索了一下如何使用它,但我似乎無法找到放置它的正確位置。我試着在閃存方法的第一行,在安裝(但後來我意識到我有沒有更新直播按鈕)

下面的代碼使一個PShape的閃兩次:

noLoop();  
root.setVal(newVal); 
root.highlight(0,255,0); 
root.setopacity(200); 
redraw(); 
try {Thread.sleep((long)1500);} 
catch (InterruptedException ex) {println("Error!");} 
root.setopacity(0); 
redraw(); 
try {Thread.sleep((long)1500);} 
catch (InterruptedException ex) {println("Error!");} 
root.setopacity(200); 
root.clearHL();//just to make sure I repeated these methods 
root.highlight(0,255,0); 
redraw(); 
try {Thread.sleep((long)1500);} 
catch (InterruptedException ex) {println("Error!");} 
root.clearHL(); 
redraw(); 
loop(); 
return root; 

回答

0

您需要顯示更多代碼(例如setup函數),
但是,您的問題似乎源於您在嘗試手動重繪對象之前可能沒有調用noLoop();的事實。

這會使對象在被處理自動重繪覆蓋之前閃爍一幀。

順便說一下,如果您願意,可以使用Timer來處理延遲等情況。

或者使用Sleep

import java.lang.Thread.*; 

noLoop(); 
root.setVal(newVal); 
root.highlight(0,255,0); 
root.setopacity(200); 
redraw(); 
Thread.sleep(1500);; 
root.setopacity(0); 
redraw(); 
Thread.sleep(1500); 
root.setopacity(200); 
root.clearHL();//just to make sure I repeated these methods 
root.highlight(0,255,0); 
redraw(); 
Thread.sleep(1500); 
root.clearHL(); 
redraw(); 
+0

所以應我只是把noLoop();在它們結束之前的所有redraw()函數和調用循環()之前? – Runeony1 2013-02-27 01:18:34

+0

@ Runeony1不,如果你運行'noloop',你不應該再次運行'loop',除非你想擦除所有的自定義繪製。 – Serdalis 2013-02-27 01:24:29

+0

好的,我把noLoop()放在方法的第一行,沒有loop()或noLoop()調用其他地方...不起作用 – Runeony1 2013-02-27 01:27:38