Java 通过引用传递的精灵使用andengine GLES2导致空指针异常
当我在参数中传递sprite并在方法中初始化该对象,但在方法中传递的对象引用仍然为null时。这是我的方法Java 通过引用传递的精灵使用andengine GLES2导致空指针异常,java,android,nullpointerexception,opengl-es-2.0,andengine,Java,Android,Nullpointerexception,Opengl Es 2.0,Andengine,当我在参数中传递sprite并在方法中初始化该对象,但在方法中传递的对象引用仍然为null时。这是我的方法 public void createAndLoadSimpleSprite(Sprite sprite ,String name, SimpleBaseGameActivity activity, int width, int height) { BitmapTextureAtlas atlasForBGSprite = new BitmapTextureAtla
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的工作方式。AFAIK不可能有输出参数。您需要做的是使用“返回”或创建字段来保存数据。这不是一个AndEngine问题。您正在处理Java的工作方式。AFAIK不可能有输出参数。您需要做的是使用“返回”或创建字段来保存数据。您必须更改返回精灵对象的方法:
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);
不要忘记将精灵附加到
场景
必须更改方法才能返回精灵对象:
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);
别忘了将精灵附加到
场景
是的,我以完全相同的方式更改了此方法。。但我需要在类的构造函数中传递sprite,这样每个对象都有自己的sprite引用。所以我想通过Sprite作为参考。我不明白你想要实现什么,但这是一个JAVA问题,尝试在你的问题中添加一个JAVA
标记。你是对的。我的坏:)。再次忽略变量()的作用域。谢谢,我用同样的方法改变了这个方法。。但我需要在类的构造函数中传递sprite,这样每个对象都有自己的sprite引用。所以我想通过Sprite作为参考。我不明白你想要实现什么,但这是一个JAVA问题,尝试在你的问题中添加一个JAVA
标记。你是对的。我的坏:)。再次忽略变量()的作用域。谢谢