0

我有代码可以改变 PShape 的颜色和不透明度,我正在调试它,我 99% 确定所有方法都有效。我做了一个延迟方法,因为处理不再有一个内置的延迟方法。当我调试它时,我注意到它只会在所有延迟调用完成后绘制它应该绘制的内容(当没有更多延迟时,它会绘制最新版本的 PShape)。所以我查看了我的延迟方法,我弄乱了它,但仍然没有正确的结果。有人可以向我解释为什么 PShape 没有更新吗?

编辑* 我收到一个告诉我使用 noLoop() 的答案,我用谷歌搜索了如何使用它,但我似乎找不到正确的放置位置。我已经在设置中尝试了 flash 方法的第一行(但后来我意识到我有没有更新的实时按钮)

下面的代码使 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;
4

1 回答 1

0

您需要显示更多代码(例如setup函数),
但是您的问题似乎源于您noLoop();在尝试手动重绘对象之前可能没有调用的事实。

这将导致对象在被处理自动重绘覆盖之前闪烁一帧。

顺便说一句,如果您愿意,您可以将 aTimer用于诸如延迟之类的事情。

或使用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();
于 2013-02-27T01:10:32.523 回答