我有这个问题。 我使用画布绘制字符。Android:NullPointerExceptions当与线程调用功能
@Override
public void onDraw(Canvas canvas) {
this.mcanvas = canvas;
mcanvas.drawBitmap(mBg, null, mRect, mPaint);
for (int i = temps.size() - 1; i >= 0; i--) {
temps.get(i).onDraw(mcanvas);
}
for (Sprite sprite : sprites) {
sprite.onDraw(canvas);
}
while(timeleft>0) {
timeleft=(int) (timeleft-1);
score.onDraw(canvas,timeleft); break;
}
}
当我为这个函数设置drawBitmap并且Thread类运行这个。
@Override
public void run() {
long ticksPS = 1000/FPS;
long startTime;
long sleepTime;
while (running) {
Canvas c = null;
startTime = System.currentTimeMillis();
try {
c = view.getHolder().lockCanvas();
synchronized (view.getHolder()) {
view.onDraw(c);
}
} finally {
if (c != null) {
view.getHolder().unlockCanvasAndPost(c);
}
}
sleepTime = ticksPS - (System.currentTimeMillis() - startTime);
try {
if (sleepTime > 0)
sleep(sleepTime);
else
sleep(2);
} catch (Exception e) {
}
}
}
但是,当我重玩游戏,logcat显示错误和关闭应用程序。
06-13 02:04:12.347: E/AndroidRuntime(956): FATAL EXCEPTION: Thread-94
06-13 02:04:12.347: E/AndroidRuntime(956): java.lang.NullPointerException
06-13 02:04:12.347: E/AndroidRuntime(956): at com.example.Boss.GameView.onDraw(GameView.java:353)
06-13 02:04:12.347: E/AndroidRuntime(956): at com.example.Boss.GameLoopThread.run(GameLoopThread.java:30)
它显示了一个错误:
mcanvas.drawBitmap(mBg, null, mRect, mPaint);
和
view.onDraw(c);
我不知道它发生了什么事。我需要帮助。提前致谢!。