Android 诺姆先生,打球时撞车
我在这里遇到了一个问题,不太确定问题是什么,在谷歌上搜索了一下,找不到太多,但我怀疑这与获取图像的方式或计算污点随机位置的方式有关,有时游戏会启动,但我最多只能达到2-3个污点,当我进入下一个网格时,它通常会崩溃。这让我怀疑,当蛇头与污点位于同一网格上时,也可能是计算代码……有很多东西我甚至不知道什么坏了,什么不坏:D,调试器总是指向GameScreen.java的151>158行:Android 诺姆先生,打球时撞车,android,crash,Android,Crash,我在这里遇到了一个问题,不太确定问题是什么,在谷歌上搜索了一下,找不到太多,但我怀疑这与获取图像的方式或计算污点随机位置的方式有关,有时游戏会启动,但我最多只能达到2-3个污点,当我进入下一个网格时,它通常会崩溃。这让我怀疑,当蛇头与污点位于同一网格上时,也可能是计算代码……有很多东西我甚至不知道什么坏了,什么不坏:D,调试器总是指向GameScreen.java的151>158行: Image stainImage = null; if (stain.type == Stain
Image stainImage = null;
if (stain.type == Stain.TYPE_1)
stainImage = Assets.stain1;
if (stain.type == Stain.TYPE_2)
stainImage = Assets.stain2;
if (stain.type == Stain.TYPE_3)
stainImage = Assets.stain3;
**int x = stain.x * 32;**
int y = stain.y * 32;
g.drawImage(stainImage, x, y);
它指向第二行,我已完全删除此代码,当我点击play时游戏不再崩溃,但是当我触摸屏幕确认我已准备就绪并将游戏状态设置为“就绪”时,它显然崩溃
错误日志显示:
- 07-29 16:18:08.516:E/AndroidRuntime(5102):致命异常: 螺纹-12
- 07-29 16:18:08.516:E/AndroidRuntime(5102): java.lang.NullPointerException
- 07-29 16:18:08.516:E/AndroidRuntime(5102):在 com.stephengibson.mrnom.GameScreen.drawWorld(GameScreen.java:158)
- 07-29 16:18:08.516:E/AndroidRuntime(5102):在 com.stephengibson.mrnom.GameScreen.present(GameScreen.java:130)
- 07-29 16:18:08.516:E/AndroidRuntime(5102):在
- com.stephengibson.framework.implementation.androidFasterEnderView.run(androidFasterEnderView.java:46)
- 07-29 16:18:08.516:E/AndroidRuntime(5102):在 run(Thread.java:1019)
drawWorld(world);
if (state == GameState.Ready)
drawReadyUI();
if (state == GameState.Running)
drawRunningUI();
if (state == GameState.Paused)
drawPausedUI();
if (state == GameState.GameOver)
drawGameOverUI();
AndroidFasterEnderView第46行是这样的:
game.getCurrentScreen().present(deltaTime);
我希望我已经提供了足够的信息,我已经很好地遵循了这本书,并且花了3-4个小时的大半时间来回地检查所有代码,添加内容并删除部分以尝试解决问题
很抱歉问了这么长的问题,哈哈,谢谢。
stain
必须在您的代码到达那一行时进行。确保在代码到达该行之前将其初始化为某个值
NullPointerException
当您尝试访问空对象的成员或对空对象调用方法时发生(表示您尝试取消引用空指针)。每当您在堆栈跟踪中看到该标记时,请找到该行并找出该行上的哪个对象可以为null。当您到达代码中的该行时,标记必须为。确保在代码到达该行之前将其初始化为某个值
NullPointerException
当您尝试访问空对象的成员或对空对象调用方法时发生(表示您尝试取消引用空指针)。每当你在堆栈跟踪中看到这一点时,找到那一行并找出那一行上的哪个对象可以为空。GameScreen.java的第158行是什么?很抱歉,我失败了,GameScreen.java的第158行是我发布的第一个代码块,应该编辑以准确反映哪一行?StackOverflow上没有行号。加粗,或者单独展示,或者别的什么。对不起,我是个白痴。int x=染色点x*32;很好,第一次总是很粗糙。GameScreen.java的第158行是什么?对不起,我失败了,GameScreen.java的第158行是我发布的第一段代码,应该编辑以反映准确的哪一行?StackOverflow上没有行号。加粗,或者单独展示,或者别的什么。对不起,我是个白痴。int x=染色点x*32;很好,第一次总是很粗糙。嗯,对了,我在更改它之前又在那里运行了一次,这样我就可以确保错误日志是相同的…它不是。错误日志似乎在另一行显示了一个不同的问题:07-29 16:56:31.236:E/AndroidRuntime(6200):位于com.stephengibson.mrnom.GameScreen.drawWorld(GameScreen.java:152),在NullPointerException之后,日志的其余部分保持不变,第152行是这样的:if(stain.type==stain.type_1)我对在这里做什么感到困惑,我对Java和Android非常陌生,每次只做一件事,然后再运行一次。重复,直到不再出现错误。修复后,我实际上没有在my World.java中创建污点实例,这意味着没有随机生成,因此游戏屏幕无法解析类型并绘制它。谢谢你的帮助!:我期待着成为这个网站的一员:)嗯,是的,在我更改它之前,我在那里再次运行它,这样我就可以确保错误日志是相同的……它不是。错误日志似乎在另一行显示了一个不同的问题:07-29 16:56:31.236:E/AndroidRuntime(6200):位于com.stephengibson.mrnom.GameScreen.drawWorld(GameScreen.java:152),在NullPointerException之后,日志的其余部分保持不变,第152行是这样的:if(stain.type==stain.type_1)我对在这里做什么感到困惑,我对Java和Android非常陌生,每次只做一件事,然后再运行一次。重复,直到不再出现错误。修复后,我实际上没有在my World.java中创建污点实例,这意味着没有随机生成,因此游戏屏幕无法解析类型并绘制它。谢谢你的帮助!:D期待成为本网站的一员:)