处理draw()方法使用不起作用

时间:2013-02-27 01:07:51

标签: java processing

我的代码改变了PShape的颜色和不透明度,我正在调试它,我99%确定所有方法都有效。我做了一个延迟方法,因为Processing不再有内置的延迟方法。当我调试它时,我注意到它只会在所有延迟调用完成之后绘制它应该是什么(它会在没有更多延迟时绘制最新版本的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;

1 个答案:

答案 0 :(得分:0)

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

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

顺便说一下,如果您愿意,可以使用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();