如何降低精灵动画的帧速?

问题描述

我想降低动画的帧速,让精灵逐帧移动更流畅、更慢,而不是断断续续的快速

public class Sprite implements Drawable {
    float speed = 2f;
    private static final int BMP_COLUMNS = 5;
    private static final int BMP_ROWS = 1;
    private int x = 0;
    private int y = 0;
    int xSpeed = 1;
    private Bitmap bmp;
    float fracsect = 30;
    private GameContent gameContent;
    private int currentFrame = 0;
    private int width;
    private int height;
    float currentX;


public Sprite(GameContent gameContent,Bitmap bmp) {
    this.gameContent = gameContent;
    this.bmp = bmp;
    this.width = bmp.getWidth() / BMP_COLUMNS;
    this.height = bmp.getHeight() / BMP_ROWS;
    currentX = x;
}


@Override
public void update(float fracsec) {
    if (currentX > gameContent.getGameWidth() - width + xSpeed) {
        xSpeed = (int) (-(int) fracsec * speed);
    }
    if (x + xSpeed < 0) {
        xSpeed = 1;
    }
    currentX = currentX + xSpeed;
    currentFrame = ++currentFrame % BMP_COLUMNS;
}

@Override
public void draw(Canvas canvas) {
    update(fracsect);
    int srcX = currentFrame * width;
    int srcY = height - height;

    Rect src = new Rect(srcX,srcY,srcX + width,srcY + height); 
    Rect dst = new Rect(x,y,x+width,y+height); /
    canvas.drawBitmap(bmp,src,dst,null);
    }
}

在项目本身中,我可以使用名为 currentX 的浮点数来降低输入流的速度。我在这里尝试了类似的东西。通常精灵使用局部变量 x 而不是 currentX 移动。

有关如何自行降低帧速度的任何建议?使用 fracsec 我试图将其转换为 int。这是否与游戏本身的 FPS 有关系,或者是否有任何可能的建议,请参阅下面的代码,了解如何降低逐帧动画的速度,使其看起来不那么断断续续,更流畅。我可以使位图移动得越来越快,但不能使帧移动本身。这就是我的意思。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)