2013-10-30 13 views
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寬的長方形,使吉姆大一點,然後我去完成創建我的精靈,然後將它們添加到過程數組(我知道,使用分割方法的紋理區域會更好,但它會導致問題並令我煩惱)。

然後我用duration和sprites數組創建我的動畫。

現在這部分在這裏特別:

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()); 
} 

這是爲什麼不工作?我甚至添加了一個超級奇怪的控制檯打印,所以我可以告訴循環甚至開始,數組正在迭代通過正確,並且我的矩形的寬度/高度是我所說的。

+0

打我,看來我必須在batch.draw(currentFrame,x,y,width,height)中使用參數在batch.draw方法中進行大小調整。 – Gibbo

回答

0

如果你畫你的精靈一樣this

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

那麼你的代碼應該工作。雖然只有一兩件事,這:

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

應該做的是這樣的:

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

你缺少最後的精靈那裏。

如果你喜歡this做:

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

然後,的確,設置高度和寬度內該方法的工作原理。