MrNom,打比赛时崩溃

时间:2013-07-29 15:42:52

标签: android crash

我在这里遇到问题并且不太确定问题是什么,做了一点谷歌搜索并且找不到太多但是我怀疑它与我的图像被取出的方式或随机放置的方式有关正在计算污点,有时游戏会启动,但我最多只能达到2-3次污染,然后当我进入与下一个相同的网格时它通常会崩溃。这让我怀疑它也可能是计算当蛇的头部与污渍处于同一网格时的代码...这么多东西我甚至都不知道什么是坏的,什么不是:D,调试器总是指向这个区域,即151行> GameScreen.java的158:

    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);

它指向第二行,我已完全删除此代码,当我点击播放时游戏不再崩溃,但是当我触摸屏幕确认我准备就绪并将游戏状态改为“准备好”时,它显然会崩溃

错误日志显示:

  • 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):at com.stephengibson.mrnom.GameScreen.drawWorld(GameScreen.java:158)
  • 07-29 16:18:08.516:E / AndroidRuntime(5102):at com.stephengibson.mrnom.GameScreen.present(GameScreen.java:130)
  • 07-29 16:18:08.516:E / AndroidRuntime(5102):at

  • com.stephengibson.framework.implementation.AndroidFastRenderView.run(AndroidFastRenderView.java:46)

  • 07-29 16:18:08.516:E / AndroidRuntime(5102):at java.lang.Thread.run(Thread.java:1019)

我已经检查了错误报告抱怨的行,GameScren第130行看起来像这样:

    drawWorld(world);
    if (state == GameState.Ready)
        drawReadyUI();
    if (state == GameState.Running)
        drawRunningUI();
    if (state == GameState.Paused)
        drawPausedUI();
    if (state == GameState.GameOver)
        drawGameOverUI();

AndroidFastRenderview第46行看起来像这样:

    game.getCurrentScreen().present(deltaTime);

我希望我已经提供了足够的信息,我已经很好地跟着这本书了,并且花了3-4个小时的时间来回走动并交叉检查所有代码,添加内容并拿走部分来试图计算解决问题。

很抱歉这个长期的问题哈哈,谢谢。

1 个答案:

答案 0 :(得分:1)

当您在代码中到达该行时,

stain必须是。确保在代码到达该行之前将其初始化为某个值。

当您尝试访问null的对象(意味着您尝试取消引用空指针)时,会发生

NullPointerException。每当你在堆栈跟踪中看到它时,找到该行并找出该行上的哪个对象可以为null。