为什么我要检索的变量必须是静态的?

时间:2013-11-17 16:18:57

标签: java variables

我是java的新手,对不起我的愚蠢...... 我有以下代码

public class player {

    float height=100;
    float basex=0;
    float x=0;
    float y=(Display.getHeight()/2)-height/2;
    float width=15;
    float speed=2.5f;

    public void drawPlayer(){

        glBegin(GL_QUADS);
        glVertex2f(basex+x,y);
        glVertex2f(basex+x+width, y);
        glVertex2f(basex+x+width, y+height);
        glVertex2f(basex+x, y+height);
        glEnd();


    }

    public float getPy() {
        // TODO Auto-generated method stub
        return y;
    }

}

但是当我在main方法中使用player.getPy()时,它表示变量“Y”需要是静态的...但是我不能让它静止,因为我有2个玩家在展出。我尝试使用player.y,同样的。

我该怎么办? 感谢您的帮助,对不起我的英语。

2 个答案:

答案 0 :(得分:0)

您需要使用对您创建的对象的引用来调用该方法,而不是类名:

player p = new player();  // Create a new player and call it p
p.getPy();                // Call the getPy() method for the player called p

答案 1 :(得分:0)

您将y设置为类字段,而每次getPy()时都需要获取高度。相反,你最好把这个逻辑放在函数本身,这将给出:

public float getPy() {
    return (Display.getHeight()/2)-height/2;
}

当然,您需要拥有该类的实例,而不仅仅是

使用它
player.getPy();