从另一个 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;
    }
  }
}

首先你应该考虑playerXPositionplayerYPosition。使用属性 playerXPositionplayerYPosition 以及方法 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() 方法,该方法不存在,因此会引发错误。