libgdx学习三-动画

原文地址:http://blog.sina.com.cn/s/blog_940dd50a0101c54b.html

动画实际上就是放电影一样的把多张静态图片快速的放出来产生了运动的错觉效果

所以需要注意的就是三个:连续的多张图片、放映速度、放映方式(连续、一次、反向)

package com.DDDtest;

import com.badlogic.gdx.ApplicationAdapter;
import com.badlogic.gdx.Gdx;
import com.badlogic.gdx.graphics.Texture;
import com.badlogic.gdx.graphics.g2d.Animation;
import com.badlogic.gdx.graphics.g2d.Animation.PlayMode;
import com.badlogic.gdx.graphics.g2d.BitmapFont;
import com.badlogic.gdx.graphics.g2d.Sprite;
import com.badlogic.gdx.graphics.g2d.SpriteBatch;
import com.badlogic.gdx.graphics.g2d.TextureRegion;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator;
import com.badlogic.gdx.graphics.g2d.freetype.FreeTypeFontGenerator.FreeTypeBitmapFontData;
import com.badlogic.gdx.scenes.scene2d.Stage;

public class DDDtest extends ApplicationAdapter {
    private SpriteBatch batch;
    private TextureRegion picLine[];
    private TextureRegion currentFrameRegion;
    private float stateTime = 0f;
    private Animation walkAnimation;
    
    @Override
    public void create() {
        TextureRegion picRegion = new TextureRegion(new Texture("walk_all.png"));
        TextureRegion picMatrix[][] = picRegion.split(picRegion.getRegionHeight()/6, picRegion.getRegionWidth()/5); //将原有图片转矩阵化
        picLine = new TextureRegion[5*6]; 
        int index = 0;
        for(int i = 0; i < 5; i++)
            for(int j = 0; j < 6; j++) {
                picLine[index++] = picMatrix[i][j]; //矩阵图转线形图
            }
        walkAnimation = new Animation(0.025f, picLine);
        walkAnimation.setPlayMode(PlayMode.LOOP); //Loop循环方式,参见原文
        batch = new SpriteBatch();
    }

    @Override
    public void render() {
        stateTime += Gdx.graphics.getDeltaTime()*0.5F; // 控制速度,
        currentFrameRegion = walkAnimation.getKeyFrame(stateTime, true); //获得当前帧
        batch.begin();
        batch.draw(currentFrameRegion, 50, 60); //绘制
        batch.end();
    }
}

个人表示在矩阵图转线性时卡壳了,go

posted @ 2014-07-04 13:15  langren123456789  阅读(186)  评论(0)    收藏  举报