我大量使用canvas.drawBitmap方法。这导致应用程序在随机出现时抛出nullpointerexception。有没有一种方法可以实现它,以便图形能够正确渲染?
我正在创建一个包含单元的板。细胞包含图像应位于的像素坐标。但是,如上所述,并非所有图像都被显示。
我收到一个错误,特别是在canvas.drawBitmap(bitmap, srcRect, dstRect, paint)
上。
错误:
03-18 13:46:21.615 22880-22932/com.example.sam.matrix E/AndroidRuntime﹕ FATAL EXCEPTION: Game Thread
Process: com.example.sam.matrix, PID: 22880
java.lang.NullPointerException
at com.example.sam.matrix.framework.util.Painter.drawImage(Painter.java:54)
at com.example.sam.matrix.game.state.PlayState.renderCell(PlayState.java:74)
at com.example.sam.matrix.game.state.PlayState.renderBoard(PlayState.java:48)
at com.example.sam.matrix.game.state.PlayState.render(PlayState.java:38)
at com.example.sam.matrix.main.GameView.updateAndRender(GameView.java:109)
at com.example.sam.matrix.main.GameView.run(GameView.java:130)
at java.lang.Thread.run(Thread.java:841)
最佳答案
我建议您调试此行-> canvas.drawBitmap(bitmap, null, dstRect, paint);
找出什么是空。我可以看到您初始化了dstRect
和paint
,所以我认为它们不会出现空指针问题。要对其进行调试,您可以执行以下操作:
if (canvas == null) {
Log.i("canvas", "canvas is null");
}
if (bitmap == null) {
Log.i("bitmap", "bitmap is null");
}
canvas.drawBitmap(bitmap, null, dstRect, paint);
那应该告诉您是什么导致了空指针异常。
让我知道是否有帮助。