LoginSignup
6
6

More than 5 years have passed since last update.

Android TextureView、SurfaceViewで簡単にスプライトシート アニメーション 〜FPSAnimator〜

Last updated at Posted at 2016-02-14

SpriteSheetアニメーションの作成

FPSAnimatorの基本的な使い方はこちらに記述しました。
今回の記事ではSpriteSheetに関して詳しく書きます。

  1. SpriteSheetDrawerを作成
    インスタンス作成時に、SpriteSheetのBitmap frameWidth、frameHeight、スプライトシートのフレーム数をコンストラクタに入力。

  2. DisplayObjectを生成し、FPSTextureView、FPSSurfaceView or ContainerにAddする。
    withの後にTweenアニメーションをするならばtween()、放物線運動のアニメーションを行うならparabolic()を記述。

    SpriteSheetDrawer spriteSheetDrawer = new SpriteSheetDrawer(
            spriteBitmap, 
            frameWidth, 
            frameHeight, 
            frameNum);

    DisplayObject displayObject = new DisplayObject();
    displayObject
            .with(spriteSheetDrawer)
            .tween()
            .tweenLoop(true)
            .transform(-frameWidth, windowHeight / 2)
            .toX(3000, windowWidth)
            .end();

    mFPSTextureView
                .addChild(displayObject);

SpriteSheetDrawerのプロパティ

関数名 機能
spriteLoopNum(int) スプライトシートアニメーションのループ回数を指定できます
dpSize(context) スプライトシートの描画を、Bitmapをそのままのサイズではなく、デバイス密度に合わせたサイズで表示
spriteLoop(boolean) trueでspriteアニメーションが再生され続けます。ただし、spriteLoopNumが指定されていた場合、無視されます
frequency(int) FPSに対して、どれだけの頻度でスプライトシートアニメーションを更新するかを入力できます。例えば、全体のFPSが30でfrequencyが2になっている場合、FPS15でスプライトシートアニメーションが再生されます。
spriteAnimationEndCallBack(AnimCallBack) スプライトシートアニメーションが最後のフレームに到達した際、リスナーをセットできます。
spritePause(boolean) スプライトシートアニメーションを一時中止させることが可能です。trueにすれば再開します。
customFrameList(List) Integer配列を入れることにより、その配列の順番でスプライトシートアニメーションが動きます。

記述例

        // 0〜26までスプライトシートフレームが再生
        List<Integer> list = new ArrayList<Integer>();
        for (int i = 0; i <= 26; i++) list.add(i);

        SpriteSheetDrawer spriteSheetDrawer = new SpriteSheetDrawer(spriteBitmap,
                frameWidth,
                frameHeight,
                frameNum)
                .dpSize(this)
                .customFrameList(list)
                .frequency(2)
                .spriteLoopNum(3)
                .spriteAnimationEndCallBack(new AnimCallBack() {
                    @Override
                    public void call() {
                        // 3回スプライトシートアニメーションが実行された際にdispatchされる。
                    }
                });



ぜひ、libraryにgithubのStarをお願いします。
FPSAnimator

6
6
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
6
6