如何编写一个从库中调用函数的函数?

How to write a function that calls function from the library?

我正在尝试编写一些程序来使用 Processing IDE 在图表上显示遥测数据。我使用 ControlP5 库来创建图表。会有很多,所以我想写一些生成它们的函数,但是有一些问题,我不确定如何将图表名称发送给函数。我尝试使用 this 但 IDE 抛出一些错误:

The function create_chart(String, int, int, int, int, int, String) does not exist.

这是我使用的代码:

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); // use true/false for smooth/no-smooth
  ControlFont font = new ControlFont(pfont, 30);
  gui.setFont(font);
  dane.create_chart("Dane", 0, 450, 300, 415, 210, "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);
  }
  dane.getValueLabel();*/
}


class Dane {

  Dane dane = new Dane();
}
public void 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);
    dane = gui.addChart(name)
      .setPosition(position_x, position_y)
      .setSize(size_x, size_y)
      .setRange(-20, 20)
      .setView(Chart.LINE)
      ;
    this.getColor().setBackground(color(100, 100));
    this.addDataSet("zero");
    this.setData("zero", new float[500]);
    this.addDataSet("world");
    this.setColors("world", color(100, 100, 500));
    this.setStrokeWeight(3);
  }

正如@Andy 所指出的,create_chart 方法未在上述代码示例的 Dane class 中定义。这应该首先解决。

如果您不打算将 create_chart 添加到单独的 class,您可能需要更改

dane.create_chart(…);

简单

create_chart(…);

然而,这使 Dane class(甚至更多)变得无用。

否则在您的代码中,setup() 方法中的 dane 是来自 ControlP5 库的 Chart 的一个实例。 Chart class 似乎没有任何 create_chart 方法,您可能打算从 Dane class.

中调用该方法

所以您可能想将 dane 的类型从 Chart 更改为 Dane

Dane class 本身似乎也有一些问题(dane 成员的目的是什么?和 ControlP5.addChart returns Chart 而不是 Dane) 但这超出了这个问题的范围。

总而言之,您的代码存在多个问题,因此很难猜测您的期望是什么以及如何解决它。