#SpriteSheetアニメーションの作成
FPSAnimatorの基本的な使い方はこちらに記述しました。
今回の記事ではSpriteSheetに関して詳しく書きます。
-
SpriteSheetDrawerを作成
インスタンス作成時に、SpriteSheetのBitmap frameWidth、frameHeight、スプライトシートのフレーム数をコンストラクタに入力。 -
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