java - 如何重绘 - 在处理中重新启动循环
问题描述
我想重置在草图中运行的“for”循环而不使用 keyPressed() 或 mousePressed() 它应该自动发生。
当笔画将覆盖大部分画布区域或当它超过宽度/高度时,我想重新开始草图。
在之前的草图中,我设置了一个计数器,它正在工作,因为没有“for”循环,但在这个循环中,计数器因此而不起作用。
int interval = 5 * 1000;
int time;
float cer;
float big = 14;
void setup() {
size(595, 842);
background(255);
}
void draw() {
strokeWeight(cer);
stroke(0);
noFill();
ellipse(width/2, height/2-100, 200, 200);
ellipse(width/2, height/2+100, 200, 200);
cer = cer + big;
if (cer < width) {
big = +1;
}
if (millis() - time >= interval) {
// clear background
background(255);
// reset time for next interval
time = millis();
// debug
println("=========================> tick");
}
}
解决方案
只需将cer
和的值big
恢复为其初始状态,当必须重新启动进程时,您必须清除背景:
float cer = 0;
float big = 14;
void draw() {
// [...]
cer = cer + big;
if (cer < width) {
big = +1;
} else {
// clear background
background(255);
// reset to initial state
cer = 0;
big = 14;
}
// [...]
}
注意,big = +1;
与 相同big = 1;
。我只是将 1 分配给big
.
可能您一直在搜索big += 1;
,它将增加big
1:
float cer = 0;
float big = 0;
void draw() {
// [...]
cer = cer + big;
println(cer, big);
if (cer < width) {
big += 1;
} else {
background(255);
cer = 0;
big = 0;
}
// [...]
}
推荐阅读
- mysql - 可以在查询中使用 IF 吗?
- c - 如何使用 ncurses 修复箭头键的延迟?
- python - 如何在 Python 中使用 OAuth 对 Wikimedia Commons 查询服务进行身份验证?
- java - 多个请求进入 Java gRPC Server 的同一个线程
- java - 如何将列表对象绑定到百里香形式?
- opencv - OpenCV cv::Mat to System::Drawing::Bitmap throw System.ArgumentException (OpenCV C++/CLI, x64)
- python - Python 在文件中搜索字符串时提高性能
- android - Android AR 场景形式。移动 3D 模型随着相机移动。3D 模型应与底部对齐
- php - 使用 PHP Curl 检查 SSL 的到期日期
- java - 包含使用 AndroidX 的工具栏会使我的应用程序崩溃