Java 如何在类位于列表中时调用该类的方法
我正在用javaFX制作一个非常基本的旧版小行星游戏,以便重新开始编程。当生成小行星和子弹(它们是类中的对象)时,我将它们保存在列表中。我试图让这些小行星在屏幕上移动,但我似乎找不到如何从该对象调用方法,只针对列表中的最后一个对象。如果我使用list.forEach(object::method),我可以让小行星移动,但是每次调用forEach方法时,它都会改变所有对象的速度,这显然是不可取的。我只想在生成列表中的最后一项时调用velocity方法(floatSpeed)。我在这里可能有什么选择 所以我试着制作我自己的for循环,通过IF语句在对象中循环,得到那些以x:0y:0的点2d速度移动的对象,但是这不起作用,因为它从IF语句中永远不会得到true。 getVelocity方法只是以Point2D格式返回对象的当前速度Java 如何在类位于列表中时调用该类的方法,java,javafx,Java,Javafx,我正在用javaFX制作一个非常基本的旧版小行星游戏,以便重新开始编程。当生成小行星和子弹(它们是类中的对象)时,我将它们保存在列表中。我试图让这些小行星在屏幕上移动,但我似乎找不到如何从该对象调用方法,只针对列表中的最后一个对象。如果我使用list.forEach(object::method),我可以让小行星移动,但是每次调用forEach方法时,它都会改变所有对象的速度,这显然是不可取的。我只想在生成列表中的最后一项时调用velocity方法(floatSpeed)。我在这里可能有什么选择
for (GameObject Asteroid : asteroids){
if(Asteroid.getVelocity() == new Point2D(0,0)){
Asteroid.floatSpeed();
System.out.println("asteroid moving");
}
这就是到目前为止我得到的让小行星移动的东西,但是每次调用forEach循环时,它们都会更新速度
private List<GameObject> bullets = new ArrayList<>();
private List<GameObject> asteroids = new ArrayList<>();
private void addAsteroid(GameObject Asteroid, double x, double y){
asteroids.add(Asteroid);
addGameObject(Asteroid,x,y);
}
private void addGameObject(GameObject object, double x, double y){
object.getView().setTranslateX(x);
object.getView().setTranslateY(y);
root.getChildren().add(object.getView());
}
if (Math.random() < 0.01){
addAsteroid(new Asteroid(), Math.random() * root.getPrefWidth(), Math.random() * root.getPrefHeight());
asteroids.forEach(GameObject::floatSpeed);
}
私有列表项目符号=新的ArrayList();
私有列表小行星=新ArrayList();
私人空间添加小行星(游戏对象小行星,双x,双y){
小行星。添加(小行星);
添加游戏对象(小行星,x,y);
}
私有void addGameObject(GameObject对象,双x,双y){
object.getView().setTranslateX(x);
object.getView().setTranslateY(y);
root.getChildren().add(object.getView());
}
if(Math.random()<0.01){
addAsteroid(new Asteroid(),Math.random()*root.getPrefWidth(),Math.random()*root.getPrefHeight());
小行星。forEach(游戏对象::floatSpeed);
}
使用以下代码行对小行星阵列的最后一个对象调用floatSpeed():
asteroids.get()返回指定索引中的对象。asteroids.size()返回列表的大小。
索引从0开始,因此需要从列表大小中删除1。
当您从列表中获取对象时,只需调用floatSpeed()方法。您想要asteroids.get(asteroids.size()-1)我猜?
asteroids.get(asteroids.size()-1).floatSpeed();