我試圖使用eclipse將Android遊戲移植到Android,但是,我試圖調試碰撞檢測系統。我爲遊戲的碰撞檢測系統使用了「java.awt.Rectangle」,並且它在Applet上運行良好,但是當我將它轉換爲「android.graphics.Rect」時,應用程序會在logcat中返回這個值:如何調試Android Rect類的空指針異常
09-24 16:23:07.047:E/AndroidRuntime(15845):java.lang.NullPointerException:嘗試從空字段'int android.graphics.Rect.left'讀取null對象引用
有人可以告訴我這意味着什麼,如何調試,以及我的代碼有什麼問題? (如下所示)
編輯:進行更改後,我發現「Rect.intersects」不能正常工作。兩個矩形不會識別碰撞。
如果有幫助,我是從 「http://www.kilobolt.com/day-7-creating-an-android-game-from-start-to-finish.html」
private int x;
private int y;
private int speedY;
protected boolean visible;
protected Rect r;
public Shoot(int startX, int startY) {
// TODO Auto-generated constructor stub
x = startX;
y = startY;
speedY=-14;
visible= true;
r = new Rect(0, 0, 0, 0);
}
public void update() {
y += speedY;
r.set(x, y, 15, 15);
if (y < 0) {
visible = false;
r = null;
}
else if (y < 750) {
checkCollision();
}
}
private void checkCollision() {
//detects collision
if (Rect.intersects(r, GameScreen.basket.getBounds())) {
visible = false;
GameScreen.score += 1;
}
}
(下面的代碼是從籃筐類)
public Rect getBounds() {
//Creates Rectangle boundaries for collisions
return new Rect(240, 73, 15, 15);
}
感謝您的答覆。這刪除了空指針異常,但現在碰撞檢測根本不起作用。對象不會消失,分數也不會增加。 – master248 2014-09-26 17:53:45
碰撞檢測適用於y> 0和y <750,你不需要這樣嗎? – sotcha 2014-09-26 18:00:24
由於某些原因,碰撞檢測對我而言並不起作用。兩個物體遇到什麼都不會發生。 – master248 2014-09-26 20:29:04