• 【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) {// pOldFrameIndexpNewFrameIndex,当前播放的是第几帧, pOldFrameIndex从 -1 算起
        //pNewFrameIndex 算起。pOldFrameIndex用于推断是否以前启动过动画,启动过最小则从0算起
        System.out.println("sprite2: pOldFrameIndex"+pOldFrameIndex+" pNewFrameIndex:"+pNewFrameIndex);
       }
       
       @Override
       public void onAnimationFinished(AnimatedSprite animatedsprite) {//动画结束时调用
        System.out.println("sprite2: 动画播放结束");
       }
      }

    OGE_Example项目源代码

  • 相关阅读:
    app测试和web测试的相同点和不同点
    重写 和 重载
    23种设计模式总概括
    小程序webview跳转页面后没有返回按钮完美解决方案
    服务器配置https协议,三种免费的方法
    Android通过外部浏览器调用微信H5支付,Android+PHP详解
    vue多级复杂列表展开/折叠,全选/分组全选实现
    A very good RPC debugging session
    在WinForms中使用ActiveX
    Lauch Debugger automatically when start the process
  • 原文地址:https://www.cnblogs.com/claireyuancy/p/7117747.html
Copyright © 2020-2023  润新知