如何在app中添加类似动画的游戏

时间:2016-06-29 07:02:49

标签: android andengine

我正在研究教育应用程序。它允许进行测试,审查答案,生成标记表等。

现在我想再添加一个模块。就像化学实践一样。也就是说,用户将为两个解决方案添加输入,之后我需要显示两个具有该解决方案的试管然后将其混合并提供生产的解决方案。 我需要以动画格式显示的所有活动。但我不确定用什么来创建这样的动画。我希望它以app里面的小游戏的形式出现。

我无法使用动画视频,因为我需要首先从用户那里获得输入,例如解决方案名称,要使用的解决方案数量和解决方案的数量。并且需要将输出显示为已反应解决方案的结果输出。

我有很多谷歌。并且仍然不确定要使用什么。不知道这是通过在图像或其他任何东西上添加动画效果来完成的。任何人都可以建议我吗?

1 个答案:

答案 0 :(得分:0)

创建一个spritesheet。如果你不知道如何,学习它。

public class Player {

    public int x, y;
    private int width, height;
    Animation animation;
    public Player(int x, int y,int width, int height, Bitmap res, int numFrames) {

        this.x = x;
        this.y = y;
        this.height = height;
        this.width = width;
        Bitmap[] image = new Bitmap[numFrames];
        spritesheet = res;

        for (int i = 0; i < image.length; i++){
            image[i] = Bitmap.createBitmap(spritesheet, i*width, 0, width, height);
        }

        animation.setFrames(image);
        animation.setDelay(10);
        startTime = System.nanoTime();
    }

    public void tick() {
        animation.update();
    }

    public void render(Canvas g) {
        g.drawBitmap(animation.getImage(), (float)x, (float)y, null);
    }
}

Animation类是自定义类:

public class Animation {
    private Bitmap[] frames;
    private int currentFrame;
    private long startTime;
    private long delay;
    private boolean playedOnce;

    public void setFrames(Bitmap[] frames){
       this.frames = frames;
        currentFrame = 0;
        startTime = System.nanoTime();
    }
    public void setDelay(long d){delay = d;}
    public void setFrame(int i){currentFrame= i;}

    public void update(){
        long elapsed = (System.nanoTime()-startTime)/1000000;

        if(elapsed>delay){
            currentFrame++;
            startTime = System.nanoTime();
        }
        if(currentFrame == frames.length){
            currentFrame = 0;
            playedOnce = true;
        }
    }
    public Bitmap getImage(){
        return frames[currentFrame];
    }
    public int getFrame(){return currentFrame;}
    public boolean playedOnce(){return playedOnce;}
}

这就是我做动画的方式。制作长条并插入相同宽度和高度的较小图像。我不认为这支持高度的spritesheets。但它动画

修改

这个动画就是问题的标题所说的你在问怎么做。在混合spritesheets和所有这一切由你决定。这将获取spritesheet以及帧的数量和渲染它的位置以及它的动画效果。如果您还需要了解其他内容,请编辑问题