如何在其中初始化类和形状属性?

时间:2017-08-13 05:50:11

标签: java javafx simulation

我正在构建一张地图,在它上面,我正在尝试添加诸如墙壁,相机,门等节点......现在这些都是由矩形等形状组成的,我已经这样做但是我正在尝试重做它,因为我遇到了碰撞检测算法的问题,因为我可以检查形状之间的碰撞但是当我试图告诉类从哪个派生出形状时它会引起我的问​​题(例如,矩形为门或墙)采取什么行动。

Client side keys: For below mentioned keys , kindly download mobile SDK keystore.json 
file from merchant panel.
SignIn Key (consumerClientId)
SignIn Secret (consumerClientSecret)
SignUp Key (merchantClientId)
SignUp Secret (merchantClientSecret)

有什么方法可以让这种类工作并返回一个矩形而不必使用getTarget()方法?

public class Door {

    private int x, y;

    public Door(int x, int y) {
        this.x = x;
        this.y = y;
    }

    public Door getTarget() {
        Door door = new Rectangle(x, y, 30, 20);
        return door;
    }
}

1 个答案:

答案 0 :(得分:1)

Rectangle课程中不应该有Door字段,Door已经扩展Rectangle。通过说Door延伸Rectangle,这意味着DoorRectangle。所以,如果你有一个像这样的碰撞检查功能:

public Boolean testCollision(Rectangle first, Rectangle second) { ... }

您可以简单地将任何Door对象传递给此方法。

Door first = new Door()
Door second = new Door()
if (testCollision(first, second) { 
    // do stuff 
}

如果您需要在Rectangle方法中区分不同的testCollision类型,则可以投射:

if (first instanceof Door) {
    Door firstAsDoor = (Door)first;
}