나는 2D 게임을 만들고 있는데, 테라 리아와 비슷합니다. 내 게임에서, 나는 XOff
과 YOff
오프셋을 가지고 있으며, 지형을 움직입니다. 나는 또한 내 캐릭터, 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)
을 유지하고, 그것은 여전히 작동했지만
NPE를 얻는다면,'core' 객체는 null입니다. 고쳐. –
괜찮습니다. 지금, 나는 생성자에서 핵심 객체를 설정 했으므로 왜 작동하지 않겠는가? 그러나 메소드 내에서 설정하고 있는가? – PulsePanda
또 다른 한 쌍의 눈에 의한 깊은 검열 만이 진리를 드러 낼 것이고, 너는 밝혀 져야한다. –