【问题标题】:Two ArrayList in run() method Collision Detectionrun()方法中的两个ArrayList碰撞检测
【发布时间】:2013-10-09 22:22:49
【问题描述】:

我在检查与在 run() 方法中更新的 2 个数组列表的冲突时遇到问题。这是我在 run() 方法中的代码:

 ArrayList enemy = addenemy.getEnemy();
        for (int i = 0; i < enemy.size(); i++) {
            Enemy p = (Enemy) enemy.get(i);
            if (p.isVisible() == true) {
                p.update();                    
            } else {
                enemy.remove(i);

            }}

ArrayList bullets = CharS.getBullets();
        for (int i = 0; i < bullets.size(); i++) {
            Bullets p = (Bullets) bullets.get(i);
            if (p.isVisible() == true) {
                p.update();
            } else {
                bullets.remove(i);

            }}

这是我在子弹类中的碰撞代码。

private void checkCollision() {
    ArrayList enemy = Game.getEnemy();
        for (int i = 0; i < enemy.size(); i++) {
            Enemy e = (Enemy) enemy.get(i);

        if(r.intersects(e.r)){
        visible = false;

        System.out.println("SHOTED");

        }}}

当敌人物体被移除(屏幕外)时我得到了错误。我该如何解决这个问题?谢谢

【问题讨论】:

  • “我出错了” - 好的,错误是什么?
  • 我收到了这条消息:线程“Thread-3”中的异常 java.lang.NullPointerException
  • 异常堆栈跟踪应显示导致 NPE 的代码行。请确定您发布的代码中的哪一行代码导致了异常。另外,checkCollision 方法中的r 是什么?
  • 这一行if(r.intersects(e.r)){ 导致了异常。 r 是子弹的矩形。它在敌人离开屏幕enemy.remove(i); 之前正常运行。 @Ted-Hopp
  • 如果该行抛出 NPE,那么当该行执行时,renull。 (或者可能是 e.r,如果 NPE 是从对 intersects 的调用中抛出的。)

标签: java arraylist collision-detection collision rectangles


【解决方案1】:

您是否将r 定义为任何东西?我没有看到定义 r 的任何地方。这会导致您的 NullPointerException 错误。

检查堆栈跟踪中发生错误的行号。

【讨论】:

  • 谢谢你们,它在我的代码中引起了r=null;。现在我的应用程序在删除后正常运行。谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-19
  • 1970-01-01
相关资源
最近更新 更多