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

Processing使用ControlP5库编写图表生成函数提示不存在如何解决

错误根源

  • 你自定义的create_chart是主sketch的全局方法,不是Chart类的成员方法,你用dane.create_chart()调用相当于在Chart类里找这个方法,自然会报方法不存在
  • create_chart内部的this指代当前Processing sketch对象,不是你新创建的图表实例,后续的属性设置全部指向了错误对象
  • 你定义的Dane类存在递归实例化问题,完全没有实际作用,可以直接删除

修正步骤

  1. 去掉调用时的dane.前缀,直接调用全局的create_chart方法
  2. 修改create_chart内部逻辑,将新创建的Chart实例存为局部变量,所有配置方法都基于这个实例调用,还可以返回实例方便你同时创建多个图表
  3. 修正参数错误:color的三个分量最大值为255,你之前写的500属于非法参数

修正后可运行代码

import controlP5.*; // 注意提前导入ControlP5包

ControlP5 gui;
Chart dane;

int i = 0, minimum, maximum;
int zero_point;
void setup()
{
  size(1280, 720);
  smooth();
  gui= new ControlP5(this);
 
  PFont pfont = createFont("TIMES", 20, true);
  ControlFont font = new ControlFont(pfont, 30);
  gui.setFont(font);
  // 直接调用全局方法即可,不需要加dane.前缀
  dane = create_chart("Dane", 0, 300, 290, 415, 220, "world");
  
  delay(100);
}

void draw()
{
  textSize(15);
  i=i+(int(random(-50, 50)));
  background(45);
  dane.push("zero", 0);
  dane.push("world", i);
  minimum = int(min(dane.getValuesFrom("world")));
  maximum = int(max(dane.getValuesFrom("world")));
  if (maximum<0) maximum = 0;
  if (minimum>0) minimum = 0;
  dane.setRange(minimum, maximum);
  text(maximum, 390, 220);
  text(minimum, 390, 510);
  if (minimum<=0 && minimum!=maximum) {
    zero_point = 220 + 290*maximum/(maximum-minimum);
    text(0, 390, zero_point);
  }
}

// 修改返回值为Chart类型,方便创建多个图表时存到不同变量里
public Chart create_chart(String name, int chart_number, int size_x, int size_y, int position_x, int position_y, String data)
  {
    gui.printPublicMethodsFor(Chart.class);
    // 把新创建的图表存为局部变量
    Chart chart = gui.addChart(name)
      .setPosition(position_x, position_y)
      .setSize(size_x, size_y)
      .setRange(-20, 20)
      .setView(Chart.LINE);
    // 所有配置都针对这个chart实例,不要用this
    chart.getColor().setBackground(color(100, 100));
    chart.addDataSet("zero");
    chart.setData("zero", new float[500]);
    chart.addDataSet("world");
    chart.setColors("world", color(100, 100, 255));
    chart.setStrokeWeight(3);
    return chart;
  }

内容的提问来源于stack exchange,提问作者Szymon Strzelczyk

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 14:45:04