从另一个 class 调用一个函数
Call a function from another class
我正在为一个学校项目编写一个小程序。主题是 "objective Coding" 所以 "main Tab" 是 draw 方法和 setup 方法所在的地方。在其他选项卡中,我编写了其他 classes 和函数。
所以在我的 "main Tab" 中有函数 void draw
它看起来像这样:
void draw() {
background();
h1.displayH();
steuerungH();
t1.displayT();
}
background();
、h1.displayH();
、t1.displayT();
三种方法都没有问题。我尝试编写如下代码:
...
...
h1.streuerungH();
...
h1
是一个对象,我尝试用函数 void steuerungH();
移动一个矩形,但总是出现错误提示:
The function steuerungH()
does not exist.
我不确定问题到底是什么,因为我在其中编写函数 void steuerungH();
的 class 看起来与其他
完全一样
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;
}
}
}
首先你应该考虑playerXPosition
和playerYPosition
。使用属性 playerXPosition
和 playerYPosition
以及方法 streuerungH
创建一个 class Player
不是更好吗?
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();
// [...]
}
您必须像这样创建一个新的 Steuerung 对象
Steuerung steuerung = new Steuerung();
然后就可以用
调用方法了
steuerung.steuerungH();
只要你做
steuerungH();
Java 将在您的 Main class 中寻找 steuerungH()
方法,该方法不存在,因此会引发错误。
我正在为一个学校项目编写一个小程序。主题是 "objective Coding" 所以 "main Tab" 是 draw 方法和 setup 方法所在的地方。在其他选项卡中,我编写了其他 classes 和函数。
所以在我的 "main Tab" 中有函数 void draw
它看起来像这样:
void draw() {
background();
h1.displayH();
steuerungH();
t1.displayT();
}
background();
、h1.displayH();
、t1.displayT();
三种方法都没有问题。我尝试编写如下代码:
...
...
h1.streuerungH();
...
h1
是一个对象,我尝试用函数 void steuerungH();
移动一个矩形,但总是出现错误提示:
The function
steuerungH()
does not exist.
我不确定问题到底是什么,因为我在其中编写函数 void steuerungH();
的 class 看起来与其他
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;
}
}
}
首先你应该考虑playerXPosition
和playerYPosition
。使用属性 playerXPosition
和 playerYPosition
以及方法 streuerungH
创建一个 class Player
不是更好吗?
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();
// [...]
}
您必须像这样创建一个新的 Steuerung 对象
Steuerung steuerung = new Steuerung();
然后就可以用
调用方法了steuerung.steuerungH();
只要你做
steuerungH();
Java 将在您的 Main class 中寻找 steuerungH()
方法,该方法不存在,因此会引发错误。