从另一个类调用一个函数

时间:2019-12-30 10:11:50

标签: java function processing

我正在为学校项目编写一个小程序。主题是“目标编码”,因此绘制方法和设置方法位于“主选项卡”中。在其他选项卡中,我编写了其他类和函数。

因此,在我的“主选项卡”中,有一个函数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;
    }
  }
}

2 个答案:

答案 0 :(得分:1)

首先,您应该考虑playerXPositionplayerYPosition。用属性PlayerplayerXPosition和方法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(); 方法,因此会引发错误。