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

Java(Processing)动画循环问题:右上到左下小球循环动画失效

问题根因

Processing底层运行的是Java,Java的%取模运算有个特性:对负数做取模时返回的结果也是负数。你写的posX=(posX-1)%500在posX递减到0之后,下一次计算就是-1%500,结果是-1,不是预期的499——小球直接跑到x=-1的画布外,自然不会从右侧边界重新进入。
之前左上到右下的动画用(posX+1)%500能正常运行,是因为posX一直递增,全程都是非负数,取模结果永远落在0-499的画布坐标范围内,不会触发这个问题。

修复方案

完全沿用你现有的极简写法,不新增额外变量、不添加判断逻辑,只需要在posX取模计算前先加一遍画布宽度500,保证参与取模的数值永远为正即可,和你之前的实现思路完全统一。

修正后的完整代码:

int circleSize=50;
int posX=500 , posY=0;
void setup(){
  size(500,500);
}
void draw(){
  background(200);
  ellipse(posX,posY,circleSize,circleSize);
  // 仅修改这一行,加+500保证取模前数值非负
  posX = (posX - 1 + 500) % 500;
  posY = (posY + 1) % 500;
  println(mouseX,mouseY);
}
  • 运行效果:小球从右上角出发往左下角移动,移出左边界后会自动从画布最右侧重新进入,循环完全连续,和之前左上到右下的动画流畅度一致。
  • 逻辑说明:哪怕posX减到-1,加500之后计算得499,对500取模结果还是499,刚好对应画布最右侧的x坐标,完美衔接循环。

内容的提问来源于stack exchange,提问作者Rookie 176

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 05:39:21