在我的应用程序中,我广泛使用java.awt
和java.awt.geom
来检测碰撞等。但突然间我遇到了一个我无法理解的问题。当我尝试将多边形转换为区域时,返回的区域为空。这是一个显示行为的片段:
System.out.println("Room: " + this.roomGeometry.getBounds2D().getMinX() + ", " + this.roomGeometry.getBounds2D().getMaxX() + ", " + this.roomGeometry.getBounds2D().getMinY() + ", " + this.roomGeometry.getBounds2D().getMaxY());
Area t1 = new Area(this.roomGeometry);
System.out.println("Room: " + t1.getBounds2D().getMinX() + ", " + t1.getBounds2D().getMaxX() + ", " + t1.getBounds2D().getMinY() + ", " + t1.getBounds2D().getMaxY());
此代码段的输出为:
Room: -20.0, 20.0, 0.0, 50.0
Room: 0.0, 0.0, 0.0, 0.0
有人可以解释为什么会这样吗?
编辑:使用以下代码在XML解析函数中设置多边形:
int b_xvals[] = getIntArrayFromString(b.getElementsByTagName("xvals").item(0).getTextContent());
int b_yvals[] = getIntArrayFromString(b.getElementsByTagName("yvals").item(0).getTextContent());
game.setRoomGeometry(new Polygon(b_xvals,b_yvals,b_xvals.length));
我已经检查过,数组包含正确的值。