我正在为学校项目编写一个小程序。主题是“目标编码”,因此绘制方法和设置方法位于“主选项卡”中。在其他选项卡中,我编写了其他类和函数。
因此,在我的“主选项卡”中,有一个函数void draw
,它看起来像这样:
void draw() {
background();
h1.displayH();
steuerungH();
t1.displayT();
}
三种方法background();
,h1.displayH();
和t1.displayT();
正常工作。我尝试编写如下代码:
...
...
h1.streuerungH();
...
h1
是一个对象,我尝试使用函数void steuerungH();
移动一个矩形,但是总是会出现错误:
功能
steuerungH()
不存在。
我不确定问题到底出在哪里,因为我在其中编写函数void steuerungH();
的类看起来与其他类完全一样
float gravity = 0.1;
float speed = 0;
class Steuerung {
void steuerungH(){
if (key == UP|| key == 'w') {
playerYPosition = playerYPosition +speed;
speed = speed + gravity;
if (playerYPosition >= 30); {
speed = speed *-1;
}
} else if (key == DOWN ||key == 's') {
/*Duck methode muss noch geschrieben werden*/
} else if (key == RIGHT || key == 'd') {
playerXPosition = playerXPosition +10;
} else if (key == LEFT ||key == 'a') {
playerXPosition = playerXPosition -10;
}
}
}
答案 0 :(得分:1)
首先,您应该考虑playerXPosition
和playerYPosition
。用属性Player
和playerXPosition
和方法playerYPosition
创建类streuerungH
会更好吗?
class Player {
float gravity = 0.1;
float speed = 0;
float playerXPosition;
float playerYPosition;
// [...]
void steuerungH(){
if (key == UP|| key == 'w') {
playerYPosition = playerYPosition +speed;
speed = speed + gravity;
if (playerYPosition >= 30); {
speed = speed *-1;
}
} else if (key == DOWN ||key == 's') {
/*Duck methode muss noch geschrieben werden*/
} else if (key == RIGHT || key == 'd') {
playerXPosition = playerXPosition +10;
} else if (key == LEFT ||key == 'a') {
playerXPosition = playerXPosition -10;
}
}
}
无论如何,如果您想保留当前的设计,则必须选择解决问题的方法:
创建Steuerung
的实例。例如
Steuerung s = new Steuerung();
void draw() {
// [...]
s.streuerungH();
// [...]
}
另一个选项是:
由于Processing在全局名称空间中提供函数,因此您可以将steuerungH
转换为函数:
float gravity = 0.1;
float speed = 0;
void steuerungH(){
// [...]
}
void draw() {
// [...]
streuerungH();
// [...]
}
答案 1 :(得分:1)
您必须像这样创建一个新的Steuerung对象
'modules' =>
array (
...
);
然后您可以使用来调用该方法
Steuerung steuerung = new Steuerung();
简单地做
steuerung.steuerungH();
Java将在您的Main类中寻找不存在的steuerungH();
方法,因此会引发错误。