如何在两个类中使用变量?

时间:2015-05-14 18:48:56

标签: java

如果变量是true,我需要能够在所有这些类中看到。

    public void performAction() {
    if (door.intersects(HERO)) {
        System.out.println("ActionPerformed!");
        HeroX = 0;
        HeroY = 0;
        inside = true;
        }
    }

这是每次按 SPACE ,现在我想画出众议院的内部。 在Main类中,我绘制了一些我想说的内容:

    public void paintComponent(Graphics g) {
    if (!inside) {
        g.drawImage(Background, 0, 0, null);
        achilles.Draw(g);
    }else if (inside) {
        g.drawImage(HouseInside, 0, 0, null);
         }
    }

我不知道如何更改"内部"在Hero类中,在Main类中使用它。我尝试了很多东西,但我不知道该怎么做。

5 个答案:

答案 0 :(得分:1)

内部是HERO对象的属性,因此,如果属性是公共属性,则可以使用heroname.inside访问它

如果属性是私有的(通常应该是),则必须在HERO类中使用公共访问函数,例如HERO.isInside,并使用设置函数设置它,如HERO.setInside和HERO.setOutside

这通常被称为" getters and setters"

答案 1 :(得分:1)

你可能想要的是全局变量

public class Global{
    public static int value;
}

然后您可以从任何地方访问它们:

Global.value;

答案 2 :(得分:0)

如果您的Main类引用了Hero类的所有实例,那么通常的最佳实践是让Hero类公开这样的方法:

public boolean isInside () {
    return (inside);
}

如果只有一个Hero类的实例(不太可能,但确定),那么一个选项就是在这个公共静态变量里面做:

public static boolean inside;

从Main引用如下:

if (! Hero.inside) {

或使用这样的getter在私有静态变量中创建:

private static boolean inside;

public static boolean isInside () {
    return (inside);
}

从Main引用如下:

if (! Hero.isInside ()) {

答案 3 :(得分:0)

尝试使用getter获取inside之外的Hero属性,并使用setter来更改它:

public class Hero {
    private boolean inside;

    ...        

    public boolean isInside() {
        return this.inside;
    }

    public void setInside(boolean inside) {
        this.inside = inside;
    }
}

我还建议您阅读有关O2J Objective-C to Java Converter的更多信息;它将让您更好地了解如何使用Java中的对象。

答案 4 :(得分:0)

你可以用不同的方式建模:

public class House {

    Location currentLocation=Location.OUTSIDE;

    Map<Location, String> layout=new HashMap<>();

    public House(){
        layout.put(Location.INSIDE,"Draw the inner parts");
        layout.put(Location.INSIDE,"Draw the outer parts");
    }

    public void enterDoor(){
        currentLocation=(currentLocation==Location.OUTSIDE)?Location.INSIDE:Location.OUTSIDE;
    }

    public void draw(){

        System.out.println(layout.get(currentLocation));

    }

}

此处enterDoor可能会被游戏环境中的事件触发。因此,你的众议院知道如何根据其状态来绘制自己。

假设你的角色移动到某个坐标( x | y ),门在哪里,enterDoorHouse调用,然后切换布局。