【v2.x OGE-example 第三節 播放精靈動畫】
1. 位置:Drawing_example --> SpriteAnimated
2. 類名:SpriteAnimated
3.利用AnimatedSprite動畫精靈類能夠實現多種多種動作。
比如:
(1).播放精靈動畫,指定播放速度;
(2).播放特定幀,指定特定每一幀的幀速,能夠實現慢放,快進,跳幀。倒放等。
(3).能夠循環播放,也能夠僅僅播放一次,也能夠指定播放次數;
(4).增加監聽器。全然掌握動畫的播放狀態,開始?結束?播到第幾幀?是否播放完?循環了幾次;
4.一下是AnimatedSprite提供播放動畫的方法:
/**
* 播放
* @param pFrameDurationEach 每幀不放多少時間,毫秒為單位
*/
public void animate(final long pFrameDurationEach)
/**
* 播放並監聽
* @param pFrameDurationEach 每幀不放多少時間,毫秒為單位
* @param pAnimationListener 動畫監聽器
*/
public void animate(final long pFrameDurationEach, final IAnimationListener pAnimationListener)
/**
* 是否循環播放
* @param pFrameDurationEach 每幀不放多少時間,毫秒為單位
* @param pLoop 是否循環
*/
public void animate(final long pFrameDurationEach, final boolean pLoop)
/**
* 是否循環播放 加監聽
* @param pFrameDurationEach 每幀不放多少時間,毫秒為單位
* @param pLoop 是否循環
* @param pAnimationListener 動畫監聽器
*/
public void animate(final long pFrameDurationEach, final boolean pLoop, final IAnimationListener pAnimationListener)
/**
* 是否循環播放 加監聽
* @param pFrameDurationEach 每幀不放多少時間,毫秒為單位
* @param pLoopCount 循環次數
*/
public void animate(final long pFrameDurationEach, final int pLoopCount)
/**
* 是否循環播放 加監聽
* @param pFrameDurationEach 每幀不放多少時間,毫秒為單位
* @param pLoopCount 循環次數
* @param pAnimationListener 動畫監聽器
*/
public void animate(final long pFrameDurationEach, final int pLoopCount, final IAnimationListener pAnimationListener)
/**
* 播放特定的幀
*
* @param pFrameDurations 特定幀的幀速.
*/
public void animate(final long[] pFrameDurations)
public void animate(final long[] pFrameDurations, final IAnimationListener pAnimationListener)
public void animate(final long[] pFrameDurations, final boolean pLoop)
public void animate(final long[] pFrameDurations, final boolean pLoop)
public void animate(final long[] pFrameDurations, final int pLoopCount)
public void animate(final long[] pFrameDurations, final int pLoopCount, final IAnimationListener pAnimationListener)
/**
* 播放特定的幀
*
* @param pFrameDurations 特定幀的幀速.
* @param pFirstTileIndex 起始幀.
* @param pLastTileIndex 終結幀.
* @param pLoop 是否循環.
*/
public void animate(final long[] pFrameDurations, final int pFirstTileIndex, final int pLastTileIndex, final boolean pLoop)
public void animate(final long[] pFrameDurations, final int pFirstTileIndex, final int pLastTileIndex, final boolean pLoop, final IAnimationListener pAnimationListener)
public void animate(final long[] pFrameDurations, final int pFirstTileIndex, final int pLastTileIndex, final int pLoopCount)
public void animate(final long[] pFrameDurations, final int pFirstTileIndex, final int pLastTileIndex, final int pLoopCount, final IAnimationListener pAnimationListener)
/**
* 播放特定的幀
*
* @param pFrameDurations 必須與pFrames同樣的length.
* @param pFrames 播放幀的文件夾.
*/
public void animate(final long[] pFrameDurations, final int[] pFrames)
/**
* 播放特定的幀
*
* @param pFrameDurations 必須與pFrames同樣的length.
* @param pFrames 播放幀的文件夾.
* @param pLoop 是否循環
*/
public void animate(final long[] pFrameDurations, final int[] pFrames, final boolean pLoop)
/**
* 播放特定的幀
*
* @param pFrameDurations 必須與pFrames同樣的length.
* @param pFrames 播放幀的文件夾.
* @param pLoopCount 循環次數
*/
public void animate(final long[] pFrameDurations, final int[] pFrames, final int pLoopCount)
/**
* 播放特定的幀
*
* @param pFrameDurations 必須與pFrames同樣的length.
* @param pFrames 播放幀的文件夾.
* @param pLoopCount 循環次數
* @param pAnimationListener 監聽器動畫狀態
*/
public void animate(final long[] pFrameDurations, final int[] pFrames, final int pLoopCount, final IAnimationListener pAnimationListener)
5.動畫監聽器:
new IAnimationListener() {
@Override
public void onAnimationStarted(AnimatedSprite animatedsprite, int i) {//動畫開始時回調
System.out.println("sprite2: 動畫開始");
}
@Override
public void onAnimationLoopFinished(AnimatedSprite animatedsprite, int i,
int j) {//動畫循環一次時回調
System.out.println("sprite2: 動畫循環一次結束");
}
@Override
public void onAnimationFrameChanged(AnimatedSprite animatedsprite, int pOldFrameIndex,
int pNewFrameIndex) {// pOldFrameIndex。pNewFrameIndex,當前播放的是第幾幀, pOldFrameIndex從 -1 算起
//pNewFrameIndex 從0 算起。pOldFrameIndex用於推斷是否以前啟動過動畫,啟動過最小則從0算起
System.out.println("sprite2: pOldFrameIndex"+pOldFrameIndex+" pNewFrameIndex:"+pNewFrameIndex);
}
@Override
public void onAnimationFinished(AnimatedSprite animatedsprite) {//動畫結束時調用
System.out.println("sprite2: 動畫播放結束");
}
}
OGE_Example項目源代碼
【v2.x OGE-example 第三節 播放精靈動畫】