0

当我在参数中传递 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 中将精灵作为参数传递吗?

4

2 回答 2

3

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

于 2012-07-15T06:21:04.683 回答
1

您必须更改方法以返回 sprite 对象:

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.

于 2012-07-15T12:29:08.267 回答