我使用dyn4j物理引擎(虽然我不认为它与我的问题相关)。
我没有收到任何错误,但是如果我在其中一个对象上按下鼠标右键,它就不会删除该对象。
有谁知道可能是什么问题?
在这里,我将对象添加到我的世界:
public void mouseClicked(MouseEvent e) {
double x = e.getPoint().getX()/100;
double y = e.getPoint().getY()/100;
if (addBlocks.isSelected()) {
BodyFixture fblock = new BodyFixture(Geometry.createRectangle(1,1));
dblock = new Body();
if (e.getButton() == MouseEvent.BUTTON1) {
dblock.addFixture(fblock);
dblock.getTransform().setTranslation(x,y);
dblock.setMass(MassType.NORMAL);
dblock.getFixture(0).setRestitution(0.3);
world.addBody(dblock);
gameObjects.add(new GameObject("dirtblock.png", dblock, new Vector2(0, 0), 0.8));
}
}
}
在这里,我试图删除它们:
if (e.getButton() == MouseEvent.BUTTON3) {
for (int i = 0; i < gameObjects.size(); i++) {
if (gameObjects.get(i).contains(e.getPoint())) {
world.removeBody(gameObjects.get(i).body);
gameObjects.remove(i);
}
}
}
答案 0 :(得分:0)
通常当您在循环中删除带索引的项目时,由于索引更改而在集合末尾开始循环,请尝试:
if (e.getButton() == MouseEvent.BUTTON3) {
for (int i = gameObjects.size() - 1; i >= 0 ; i--) {
if (gameObjects.get(i).contains(e.getPoint())) {
world.removeBody(gameObjects.get(i).body);
gameObjects.remove(i);
}
}
}