Android TextureView, SurfaceView에서 쉽게 스프라이트 시트 애니메이션 ~FPSAnimator~

SpriteSheet 애니메이션 만들기



FPSAnimator의 기본적인 사용법은 여기 에 기술했습니다.
이번 기사에서는 SpriteSheet에 대해 자세히 씁니다.


  • SpriteSheetDrawer 만들기
    인스턴스를 만들 때 SpriteSheet의 Bitmap frameWidth, frameHeight 및 스프라이트 시트 프레임 수를 생성자에 입력합니다.
  • DisplayObject를 생성하고 FPSTextureView, FPSSurfaceView 또는 Container에 추가합니다.
    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

    좋은 웹페이지 즐겨찾기