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

Processing中Bubble构造函数可读取height但无法读取width的问题

问题原因与解决方案

核心问题:代码执行顺序导致的width取值错误

你遇到的问题是Processing的代码执行顺序造成的:

  • 全局变量(包括b1、b2、b3这三个Bubble实例)会在setup()函数执行前完成初始化,也就是说Bubble的构造函数会在size(1200,800)调用前就运行了。
  • 这时候Processing还没设置自定义画布尺寸,width和height都是默认的100像素。

那为什么y轴看起来正常?因为reset()方法里的height是在draw()循环里调用的,此时setup()已经执行完毕,height已经被设置为800,所以气泡重置y位置时能拿到正确值。但x轴的初始值是在构造函数里用默认的width=100计算的,所以x的范围被限制在d/2到100-d/2之间,自然不会超过80左右。

修复方法

把Bubble实例的创建移到setup()函数内部,确保在size()执行完成后再初始化气泡:

修改第一个标签页的代码:

Bubble b1;
Bubble b2;
Bubble b3;

void setup(){
  size(1200,800);
  // 在size之后创建实例,此时width和height已正确设置
  b1 = new Bubble();
  b2 = new Bubble();
  b3 = new Bubble();
}

void draw(){
  background(0);
  
  b1.render();
  b1.move();
  b1.reset();
  println(b1.x);
  
  b2.render();
  b2.move();
  b2.reset();
  println(b2.x);
  
  b3.render();
  b3.move();
  b3.reset();
  println(b3.x);
}

这样构造函数里的width就能拿到1200的正确值,气泡的x轴位置就会分布在整个画布宽度范围内了。

内容的提问来源于stack exchange,提问作者Natalie Pockett

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 19:12:36