程序员人生 网站导航

【v2.x OGE-example 第三节 播放精灵动画】

栏目:互联网时间:2014-11-25 08:11:38


1. 位置:Drawing_example --> SpriteAnimated
2. 类名:SpriteAnimated

 

3.利用AnimatedSprite动画精灵类可以实现多种多种动作。例如:

1.播放精灵动画,指定播放速度;

2.播放特定帧,指定特定每帧的帧速,可以实现慢放,快进,跳帧,倒放等;

3.可以循环播放,也能够只播放1次,也能够指定播放次数;

4.加入监听器,完全掌握动画的播放状态,开始?结束?播到第几帧?是不是播放完?循环了几次;

 
4.1下是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) {//动画循环1次时回调
    System.out.println("sprite2: 动画循环1次结束");
   }
   
   @Override
   public void onAnimationFrameChanged(AnimatedSprite animatedsprite, int pOldFrameIndex,
     int pNewFrameIndex) {// pOldFrameIndexpNewFrameIndex,当前播放的是第几帧, pOldFrameIndex从 ⑴ 算起
    //pNewFrameIndex 算起,pOldFrameIndex用于判断是不是曾启动过动画,启动过最小则从0算起
    System.out.println("sprite2: pOldFrameIndex"+pOldFrameIndex+" pNewFrameIndex:"+pNewFrameIndex);
   }
   
   @Override
   public void onAnimationFinished(AnimatedSprite animatedsprite) {//动画结束时调用
    System.out.println("sprite2: 动画播放结束");
   }
  }

 

 

OGE_Example项目源码

 

------分隔线----------------------------
------分隔线----------------------------

最新技术推荐