如果变量是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类中使用它。我尝试了很多东西,但我不知道该怎么做。
答案 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 ),门在哪里,enterDoor
被House
调用,然后切换布局。