[英]Nullpointer Exception?
嗨,我正在制作Java游戲,但出現以下錯誤:
actionPerformedException in thread "AWT-EventQueue-0" java.lang.NullPointerException
at OurGame.Ball.checkCollision(Ball.java:53)
at OurGame.Ball.actionPerformed(Ball.java:57)
at javax.swing.Timer.fireActionPerformed(Unknown Source)
at javax.swing.Timer$DoPostEvent.run(Unknown Source)
at java.awt.event.InvocationEvent.dispatch(Unknown Source)
at java.awt.EventQueue.dispatchEvent(Unknown Source)
at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source)
at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.pumpEvents(Unknown Source)
at java.awt.EventDispatchThread.run(Unknown Source)
當我的游戲檢查球與其他物體之間是否發生碰撞時,就會發生這種情況。 這是我的“ Ball.java”代碼
package OurGame;
import java.awt.*;
import java.awt.event.*;
import java.util.Random;
import javax.swing.*;
public class Ball extends JPanel implements ActionListener {
/**
*
*/
private static final long serialVersionUID = 1L;
int x, y, cx, cy;
Image img;
ImageIcon i;
Player p;
Board b;
Timer t;
Random r;
Rectangle player, ball;
public Ball() {
r = new Random();
x = 500;
y = 190;
cx = -1;
System.out.println("New coin created: " + x + ", " +y);
i = new ImageIcon("ball.png");
img = i.getImage();
t = new Timer(10,this);
t.start();
}
@Override
public void actionPerformed(ActionEvent e) {
System.out.print("actionPerformed");
checkCollision();
move();
}
public void checkCollision(){
player = new Rectangle(p.getX(),p.getY(),10,32);
ball = new Rectangle(getX(),getY(),8,8);
if (player.intersects(ball))
{
// A Collision!
// we know which enemy (e), so we can call e.DoCollision();
b.score += 1;
if(cx == -1) {
cx = 1;
} else {
if(cx == 1) {
cx = -1;
}
}
System.out.println("Collided");
} else {
}
}
public void move() {
System.out.print("MOVING");
x += cx;
}
public void setX(int xs) {
x = xs;
}
public void setY(int ys) {
y = ys;
}
public Image getImage(){
return img;
}
public int getX(){
return x;
}
public int getY() {
return y;
}
}
在以下代碼處發生錯誤:
player = new Rectangle(p.getX(),p.getY(),10,32);
提前致謝。
您的Ball
類有一個名為p
的字段,其類型為Player
。
但是您永遠不會為該字段分配值,因此該值始終為null
。
嘗試在該null
值上調用任何方法肯定會導致NullPointerException
。
您要么需要確保為每個Ball
分配了一個Player
(最好是在構造過程中), 要么更改代碼以解決缺少Player
(即在適當的地方檢查是否為null
)。
另外, Rectangle
字段player
和ball
似乎僅在checkCollision
方法中使用,因此應該是在該方法中聲明的局部變量,而不是字段。
您確定為Ball的“ p”(玩家)設置值嗎? 'p'未初始化。
變量p
尚未初始化。 應該在哪里?
您有一個null
。 此鏈接將向您解釋java NullPointerException
的含義。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.