You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在p5.js中使用max函数实现变量递减且不低于最小值1

问题根因

  1. 初始值配置错误:setup 函数中你给 SecureStorageCode_1 设置的初始值为0,第一次触发 mouseMoved 事件时,执行 SecureStorageCode_1 -=3 得到-3,再执行 max(1,-3) 直接得到1。
  2. 触发逻辑无限制: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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.24 18:24:08