【问题标题】:How to write a function that calls function from the library?如何编写一个从库中调用函数的函数?
【发布时间】:2021-10-24 10:36:36
【问题描述】:

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

函数create_chart(String, int, int, int, int, int, String) 不存在。

这是我使用的代码:

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);
  }

【问题讨论】:

  • create_chart 未在发布的Dane 的类定义中定义,因此它在使用时不存在。
  • 您对Dane 的定义似乎引入了一个无限构造函数&lt;init&gt; 序列。

标签: java processing


【解决方案1】:

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

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

dane.create_chart(…);

简单

create_chart(…);

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

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

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

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

总而言之,您的代码有几个问题,难以猜测您的期望是什么以及如何解决它。

【讨论】:

  • 感谢您的回答,我使用 'Dane' 类,因为我只想使用 'dane.create_chart(...);' 创建许多图表并在作为图表名称之前更改单词。我不确定这是否有意义,我刚刚开始使用 Processing。
  • 你不需要单独的类。只需使用create_chart 作为本地实例方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-01-28
  • 1970-01-01
  • 2023-02-21
  • 1970-01-01
  • 2019-02-17
  • 1970-01-01
相关资源
最近更新 更多