Processing开发:实现图片弹出后3秒自动消失的问题求助
实现完成图片3秒后自动消失的方案
嘿,你已经搞定了项目的大部分功能,就差最后一步让「完成」图片自动消失啦!结合你给出的代码片段,我来帮你捋清楚怎么实现——核心思路是用Processing的millis()函数追踪时间,精准控制图片的显示时长。
关键逻辑梳理
我们需要一个布尔变量(比如showMedicD)控制「完成」图片的显示状态,同时记录图片开始显示的时间点。之后在每帧绘制时,检查当前时间与开始时间的差值,当差值超过3000毫秒时,就把布尔变量设为false,让图片停止显示。
修改后的代码示例(含注释)
假设你的代码已有基础变量,我补全关键部分并标注说明:
PImage medic; PImage medicD; float startTime; final int waitpopup = 3000; final int DISPLAY_DURATION = 3000; boolean showMedic = false; // 控制初始图片的显示状态 boolean showMedicD = false; // 控制完成图片的显示状态 void setup() { size(800, 600); // 替换成你的画布尺寸 // 加载图片,记得替换成你实际的图片路径 medic = loadImage("medic.png"); medicD = loadImage("medicD.png"); } void draw() { background(255); // 清屏,可根据项目需求调整背景色 // 3秒后弹出初始图片(你已实现的逻辑,这里保留) if (millis() > waitpopup && !showMedicD) { showMedic = true; } // 显示初始图片(居中,可调整位置) if (showMedic) { image(medic, width/2 - medic.width/2, height/2 - medic.height/2); } // 显示完成图片+自动消失逻辑 if (showMedicD) { image(medicD, width/2 - medicD.width/2, height/2 - medicD.height/2); // 检查是否超过3秒显示时长 if (millis() - startTime > DISPLAY_DURATION) { showMedicD = false; // 隐藏完成图片 // 若需要,可同时隐藏初始图片,根据需求调整 // showMedic = false; } } } void mousePressed() { // 判断是否点击了初始图片的区域 if (showMedic && mouseX >= width/2 - medic.width/2 && mouseX <= width/2 + medic.width/2 && mouseY >= height/2 - medic.height/2 && mouseY <= height/2 + medic.height/2) { showMedic = false; // 隐藏初始图片 showMedicD = true; // 显示完成图片 startTime = millis(); // 记录完成图片开始显示的时间点 } }
核心细节解释
millis()函数:它返回程序启动到当前的毫秒数,是Processing中处理定时的首选工具——相比delay(),它不会阻塞整个程序的运行,更适合交互场景。- 时间差判断:当
millis() - startTime大于DISPLAY_DURATION(3000毫秒)时,说明完成图片已经显示了3秒,此时将showMedicD设为false,图片就会停止绘制,实现自动消失。 - 点击区域校验:在
mousePressed()里,通过判断鼠标位置是否在初始图片范围内,确保只有点击图片才会触发后续逻辑,避免误触。
按照这个逻辑调整你的代码,就能顺利实现完成图片3秒后自动消失的功能啦!
内容的提问来源于stack exchange,提问作者Marco N.
相关产品推荐
相关产品推荐

