我的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个时,第一个将被替换。
答案 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()中,你的精灵只会在触地事件中被绘制。