2013-05-22 5 views
0

나는 2D 게임을 만들고 있는데, 테라 리아와 비슷합니다. 내 게임에서, 나는 XOffYOff 오프셋을 가지고 있으며, 지형을 움직입니다. 나는 또한 내 캐릭터, move()하는 방법이 있고, 수행 모든이있다 :2D 스크롤링을위한 Java nullpointerexception

public void move() { 
     if (!ableToMove) //makes sure you can move 
      return; 
     // x += moveX; these 2 methods work, but x and y are just my player coords. 
     // y += moveY; 
     core.setYOff(1); //core is my main class, where the global variables are stored 
    } 

의견 라벨 및 각 변수에 대해 설명합니다. 그래서 setYOff (1) 따라서 같은 YOff을 설정

private void setYOff(int i){ 
    YOff += i; 
} 

지금, 내가 move있어서 액세스하고 하나의 방법이있다. 스레드에서, PlayerThread라고, 나는 move()에 대한 상수 호출을 가지고 있고 또 다른 방법은 applyGravity()이라고 불리는데, 이것은 정말로이 질문과의 관련성이 없습니다. 이는 PlayerThread에 있습니다.

지금 여기에 내가 setYOff()를 호출 할 때, 나는 다음과 같은 오류를 받고 있어요 ... 난 데 문제가 있습니다 : 저를 말하고있다

Exception in thread "player Thread" java.lang.NullPointerException 
    at main.Player.move(Player.java:33) 
    at main.PlayerThread.run(PlayerThread.java:24) 
    at java.lang.Thread.run(Unknown Source) 

이 나는 ​​setYOff() 메소드를 호출하고있을 때 내 move() 메서드에서 작동하지 않습니다. 난 그냥 테스트하고 스레드 자체에 Y 오프셋을 설정하는 호출을 이동하고, 그것은 같은 오류를 준다 ... 나는 그때 그것을 RefreshThread로 이동하려고 노력하고 흥미롭게도 작동하지 않았다 ... 그것은 전체 맵은 20 밀리 초마다 1 픽셀 씩 내려갑니다 ... 그리고 나는 이유가 없습니다! 이게 작동하지 않는 내 이동 방법에 문제가 있습니까? 아니면 더 나은, 내 PlayerThread, 장기적으로이 작업을하지 않습니까? RefreshThread의 다른 점은 무엇입니까? 여러분 모두가 전화, 생성 및 기타 모든 스레드와 관련된 모든 코드를 필요로한다면 저는 그것을 제공 할 수 있습니다 만, 당신이 필요로 할 것인지 확신 할 수 없습니다 ... 어떻게해야합니까? 미리 감사드립니다!

편집 :은 그냥 move() 호출을 주석하고 그냥 y 오프셋 (offset)를 조정 가진 내 PlayerThread에, 시도하고 일했다! 그래서 그것은 이동 방법과 관련이 있습니다, 그러나 다시, 왜? PREVIOUS 편집 할

보정 : 그래서 더 테스트, 난 이동 방법 자체 ...

내에서 다시하지 스레드에 다시 move() 통화를 보류하고있는 setYOff(1)을 유지하고, 그것은 여전히 ​​작동했지만
+2

NPE를 얻는다면,'core' 객체는 null입니다. 고쳐. –

+0

괜찮습니다. 지금, 나는 생성자에서 핵심 객체를 설정 했으므로 왜 작동하지 않겠는가? 그러나 메소드 내에서 설정하고 있는가? – PulsePanda

+1

또 다른 한 쌍의 눈에 의한 깊은 검열 만이 진리를 드러 낼 것이고, 너는 밝혀 져야한다. –

답변

2

NullPointerException은 메서드가 호출되는 개체가 Null이고이 경우 core 개체임을 나타냅니다. 문제를 해결하고 문제를 해결해야합니다.