[英]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.