如何编写一个从库中调用函数的函数?
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
) 但这超出了这个问题的范围。
总而言之,您的代码存在多个问题,因此很难猜测您的期望是什么以及如何解决它。
我正在尝试编写一些程序来使用 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
) 但这超出了这个问题的范围。
总而言之,您的代码存在多个问题,因此很难猜测您的期望是什么以及如何解决它。