在java中如何调用类的方法,java - 如何在列表中调用类的方法 - SO中文参考 - www.soinside.com...

我正在javaFX中制作旧的Asteroids游戏的基本版本,以重新进入编程。当生成小行星和子弹(它们是类中的对象)时,我将它们保存在List中。我试图让这些小行星在屏幕上移动,但我似乎无法找到如何从对象调用方法,仅用于列表中的最后一个对象。如果我使用list.forEach(object :: method)我可以让小行星移动,但每次调用forEach方法时它都会改变所有对象的速度,这当然是不可取的。我想在生成时仅为列表中的最后一项调用velocity方法(floatSpeed)。这可能是我可能的选择吗?

所以我尝试使用自己的for循环遍历对象,并使用IF语句获取具有Point:D速度x:0 y:0的那些移动,但是这不起作用,因为它永远不会从如果声明。 getVelocity方法只返回Point2D格式的对象的当前速度。

for (GameObject Asteroid : asteroids){

if(Asteroid.getVelocity() == new Point2D(0,0)){

Asteroid.floatSpeed();

System.out.println("asteroid moving");

}

这是我到目前为止让小行星移动的原因,但是每次调用forEach循环时它们都会更新速度。

private List bullets = new ArrayList<>();

private List 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);

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值