2012-06-10 30 views
2

我有一個AnimatedSprite,它完成動畫後,我想反轉動畫。我想繼續這樣做。一旦反向動畫完成,我想播放原始的。這可能很容易,但我是Android和AndEngine的新手。如何反轉AndEngine中AnimatedSprite的動畫?

mFlower1Sprite = new AnimatedSprite(20, 800, this.mFlower1); 
mFlower1Sprite.setScale((float) 1.5); 

mFlower1Sprite.animate(500, 0, new IAnimationListener() { 
    public void onAnimationEnd(final AnimatedSprite pAnimatedSprite) { 
      // reverse animation 
    } 
}); 

mScene.attachChild(mFlower1Sprite); 
return mScene; 
+1

你可以試試mFlower1.setFlippedHorizo​​ntal(true);它會翻轉圖像,所以你會從最後一幀開始,但它也會改變你的精靈所面對的方向。只是一些想法=) – Gatekeeper

+0

我知道的唯一方法是使用動畫(long [] pFrameDurations,int [] pFrames,int pLoopCount)方法,其中首先必須提到從開始到結束的所有幀,然後是反轉一樣的。 – skygeek

回答

-1

我不知道任何支持,扭轉了AnimatedSprite的框架,但它可能是一個非常有用的功能,所以我很想看看,如果我錯了。

你最好的辦法可能是創建另一個精靈畫面,畫面顛倒,AnimatedSprite的另一個實例用於該工作表。然後在您的活動中定義一個或兩個私有IAnimationListeners(而不是在您調用.animate()時動態添加),它們在每個動畫結束時交替分離並附加兩個精靈。

+0

有一種方法,我們可以用一個精靈來管理..我已經在 – Rajesh

+0

之前的某個地方看到它了請問我可以給我更多的細節,我是如何在我的活動中使用IAnimationListerner來交替地分離和連接兩個精靈的? – shailenTJ

+0

這太昂貴了。在AndEngine GLES2上,您可以從TiledTextureRegion創建一個AnimatedSprite。在構造函數中,您傳遞加載的ITexture,以及ITextureRegion的集合,它們表示要按順序進行動畫處理的每個幀。如果你將幀1傳遞給最後並持續到1,則只需調用sprite.animate(time)即可獲得前進/後退效果。 –

3

使用animate方法:

public AnimatedSprite animate (long[] pFrameDurations, int[] pFrames, 
    int pLoopCount, AnimatedSprite.IAnimationListener pAnimationListener) 

動畫細節幀。

參數:

pFrameDurations必須具有相同的長度爲P幀。

pFrames動畫幀的索引。

只需按相反順序列出索引。