如何绘制具有相同纹理的精灵的arraylist? (LibGDX)

时间:2015-08-18 18:55:58

标签: android libgdx sprite

我的touchDown方法:

public boolean touchDown(int screenX, int screenY, int pointer, int button) {
    float pointerX = InputTransform.getCursorToModelX(GateRunner.WIDTH, screenX);
    float pointerY = InputTransform.getCursorToModelY(GateRunner.HEIGHT, screenY);

    reversers.add(reverserInc, new Sprite(reverser));
    reversers.get(reverserInc).setX(gameIcon.getSprite().getY() / 4);
    reversers.get(reverserInc).setY(gameIcon.getSprite().getY());

    if(reverserInc >= 6)
        reverserInc = 0;

    if(gameIcon.getvX() > 0)
        reversers.get(reverserInc).setPosition(gameIcon.getPosition().x + gameIcon.getSprite().getX(), gameIcon.getPosition().y);
    else if(gameIcon.getvX() <= 0)
        reversers.get(reverserInc).setPosition(gameIcon.getPosition().x, gameIcon.getPosition().y);

    game.batch.begin();
    reversers.get(reverserInc).draw(game.batch);
    game.batch.end();

    reverserInc++;

    gameIcon.negateVelocityX();
    gameIcon.negateRotation();

    return true;
}

我想要一个具有相同纹理的Sprite数组 - 这样我就可以在屏幕上拥有多个Sprite。我不确定这是否是实现这一目标的最佳方式,但无论如何,它无法正常工作。我知道当我点击它时会运行这段代码,因为底部的两个方法(gameIcon.negateVelocityX和gameIcon.negateRotation())是可见的。为什么我的反转精灵不被抽出?

编辑(澄清):预期效果是当我触摸屏幕时,将绘制一个精灵。然后,当我再次触摸屏幕时,将绘制另一个精灵。最多有6个屏幕精灵 - 当有超过6个时,第一个将被替换。

1 个答案:

答案 0 :(得分:0)

在您的代码中,您只绘制一个精灵,即索引reverserInc的精灵。

如果你想绘制存储在数组中的每个精灵,你的代码中需要这样的东西:

game.batch.begin();    
for(int i = 0; i < reversers.size; i++){
        reversers.get(i).draw(game.batch);
    }
game.batch.end();

修改:您需要将此代码放入render()。如果你把它放在touchDown()中,你的精灵只会在触地事件中被绘制。