【问题标题】:Sprite passing by reference result in null pointer exception using andengine GLES2使用andengine GLES2通过引用传递Sprite导致空指针异常
【发布时间】:2012-07-14 12:36:42
【问题描述】:

当我在参数中传递 sprite 并在方法中初始化该对象但 Object 的引用仍然为 null 时,我在方法中传递了它。这是我的方法。

public void createAndLoadSimpleSprite(Sprite sprite ,String name,
        SimpleBaseGameActivity activity, int width, int height) {

    BitmapTextureAtlas atlasForBGSprite = new BitmapTextureAtlas(
            activity.getTextureManager(), width, height);
    TextureRegion backgroundSpriteTextureRegion = BitmapTextureAtlasTextureRegionFactory
            .createFromAsset(atlasForBGSprite, activity, name, 0, 0);
    sprite = new Sprite(0, 0, backgroundSpriteTextureRegion,
            activity.getVertexBufferObjectManager());
    activity.getTextureManager().loadTexture(atlasForBGSprite);

}

以及我如何称呼它。

createAndLoadSimpleSprite(defualtCageSprite,"bg.png", this, 450, 444);

但访问 defaultCageSprite 仍然会引发空指针异常...我不确定这是 AndEngine 问题。但是如果没有解决方法,我们不能在 AndEngine 中将精灵作为参数传递吗??

【问题讨论】:

    标签: java android nullpointerexception opengl-es-2.0 andengine


    【解决方案1】:

    这不是 AndEngine 的问题。您正在处理 Java 的工作方式。 AFAIK不可能有输出参数。您需要做的是使用“返回”或创建字段来保存数据。

    【讨论】:

      【解决方案2】:

      你必须改变你的方法来返回精灵对象:

      public Sprite createAndLoadSimpleSprite(String name,
          SimpleBaseGameActivity activity, int width, int height) {
      
      BitmapTextureAtlas atlasForBGSprite = new BitmapTextureAtlas(
              activity.getTextureManager(), width, height);
      TextureRegion backgroundSpriteTextureRegion = BitmapTextureAtlasTextureRegionFactory
              .createFromAsset(atlasForBGSprite, activity, name, 0, 0);
      activity.getTextureManager().loadTexture(atlasForBGSprite);
      
      Sprite sprite = new Sprite(0, 0, backgroundSpriteTextureRegion,
              activity.getVertexBufferObjectManager());
      
      return sprite;
      
      }
      

      现在你可以打电话了:

      defualtCageSprite = createAndLoadSimpleSprite("bg.png", this, 450, 444);
      

      不要忘记将您的精灵附加到scene

      【讨论】:

      • 是的,我以完全相同的方式更改了此方法。但是我需要在我的类的构造函数中传递精灵,以便每个对象都有自己的精灵引用。所以我想通过 Sprite 作为参考。
      • 我不明白您要达到什么目的,但这是一个 JAVA 问题,请尝试在您的问题中添加 java 标签。
      • 你是对的。我的错 :)。再次忽略了变量的范围:)。谢谢
      猜你喜欢
      • 2012-08-24
      • 1970-01-01
      • 2018-03-24
      • 2014-04-02
      • 1970-01-01
      • 1970-01-01
      • 2014-05-06
      • 2014-07-27
      相关资源
      最近更新 更多