1

我有我认为是一个非常基本的问题。我正在尝试使用 7 个精灵做一个基本动画,其中 6 个在 Sprite[] 数组中。

现在,当我按下按键时,我现在可以正确地设置动画,除了在向左翻转时会翻转,但这是我以后要弄清楚的事情。现在我想调整这些精灵的大小。

它们目前的大小为 32x68。这是我的代码:

jimRect = new Rectangle();

    jimRect.height = 96;
    jimRect.width = 48;
    jimRect.x = 800 / 2 - jimRect.getWidth();
    jimRect.y = 0;

    // Create our assets
    rock = new Texture(Gdx.files.internal("data/img/rock.png"));
    gems = new Texture(Gdx.files.internal("data/img/gems.png"));
    jim0 = new Sprite(new Texture(Gdx.files.internal("data/img/jim0.png")));
    jim1 = new Sprite(new Texture(Gdx.files.internal("data/img/jim1.png")));
    jim2 = new Sprite(new Texture(Gdx.files.internal("data/img/jim2.png")));
    jim3 = new Sprite(new Texture(Gdx.files.internal("data/img/jim3.png")));
    jim4 = new Sprite(new Texture(Gdx.files.internal("data/img/jim4.png")));
    jim5 = new Sprite(new Texture(Gdx.files.internal("data/img/jim5.png")));
    jim6 = new Sprite(new Texture(Gdx.files.internal("data/img/jim6.png")));

    // Create animations
    sprites = new Sprite[] { jim1, jim2, jim3, jim4, jim5, jim6 };
    walkFrames = new Animation(ANIM_DURATION, sprites);
    stateTime = 0;

    for(int i = 0; i < sprites.length - 1; i++){
        sprites[i].setSize(jimRect.getWidth(), jimRect.getHeight());
        System.out.println("Resized " + i + " sprites to " + jimRect.getWidth() + "x" + jimRect.getHeight());
    }
}

所以基本上我创建了一个高度为 96 和宽度为 48 的矩形以使 Jim 更大一点,然后我完成创建我的精灵然后将它们添加到数组中的过程(我知道,使用分割方法的纹理区域会会更好,但它会引起问题并使我烦恼)。

然后我用持续时间和精灵数组创建我的动画。

现在这部分特别是:

    for(int i = 0; i < sprites.length - 1; i++){
    sprites[i].setSize(jimRect.getWidth(), jimRect.getHeight());
    System.out.println("Resized " + i + " sprites to " + jimRect.getWidth() + "x" + jimRect.getHeight());
}

为什么这不起作用?我什至添加了一个超级精美的控制台打印,这样我就可以知道循环正在启动,数组正在正确地迭代,并且我的矩形的宽度/高度就是我所说的。

4

1 回答 1

0

如果你像这样画你的精灵:

sprite.setRegion(currentFrame);
sprite.draw();

然后你的代码应该可以工作。不过只有一件事,这个:

for(int i = 0; i < sprites.length - 1; i++){

应该这样做:

for(int i = 0; i < sprites.length; i++){

你错过了那里的最后一个精灵。

如果你这样

batch.draw(currentFrame, x, y, width, height);

然后,确实,在该方法中设置高度和宽度是有效的。

于 2014-01-08T22:14:14.487 回答