如何在p5.js中使用max函数实现变量递减且不低于最小值1
问题根因
- 初始值配置错误:
setup函数中你给SecureStorageCode_1设置的初始值为0,第一次触发mouseMoved事件时,执行SecureStorageCode_1 -=3得到-3,再执行max(1,-3)直接得到1。 - 触发逻辑无限制:
mouseMoved事件会在鼠标每移动1像素时触发一次,就算你把初始值设为更大的数,只要移动几次鼠标,数值就会快速递减到1,之后每次触发扣减后计算的结果都会被max函数限制为1,出现卡死的情况。
修复方案
第一步:调整初始值
第二个刻度盘的最大数值为14,你可以根据需求给SecureStorageCode_1设置合理的初始最大值,修改setup函数中的对应代码:
function setup() { createCanvas(512,512); //initialise the variables SecureStorageCode_0 = 0; SecureStorageCode_1 = 14; // 修改初始值为刻度盘最大值 SecureStorageCode_2 = 0; SecureStorageCode_3 = 0; SecureStorageCode_4 = 0; }
第二步:优化触发逻辑
给递减操作增加触发条件,避免无限制扣减。比如可以限制只有鼠标在第二个刻度盘范围内移动时才执行扣减,修改mouseMoved代码:
function mouseMoved() { SecureStorageCode_0 = max(3,mouseX) // 仅当鼠标落在左下角第二个刻度盘区域内时才扣减数值 if(mouseX > 50 && mouseX < 190 && mouseY > 310 && mouseY < 450){ SecureStorageCode_1 -=3 SecureStorageCode_1 = max(1,SecureStorageCode_1) } }
如果希望操作更可控,也可以把递减逻辑移到mousePressed或者keyPressed事件中,只有主动点击/按键时才执行扣减。
内容的提问来源于stack exchange,提问作者Lex047
相关产品推荐
相关产品推荐

