【发布时间】:2021-10-02 11:07:35
【问题描述】:
我正在使用一个教程来了解精灵如何使用 draw() 方法以及使用游戏循环来工作。据我所知,我为自己的项目调整了代码。
我的问题是,除了第二行之外,我如何访问精灵表的另一行。我的精灵表有 9 列和 20 行。
public class Sprite implements Drawable {
private static final int BMP_COLUMNS = 9;
private static final int BMP_ROWS = 20;
private int x = 0;
private int y = 0;
private int xSpeed = 5;
private Bitmap bmp;
float fracsect = 30;
private GameContent gameContent;
private int currentFrame = 0;
private int width;
private int height;
public Sprite(GameContent gameContent, Bitmap bmp) {
this.gameContent = gameContent;
this.bmp = bmp;
this.width = bmp.getWidth() / BMP_COLUMNS;
this.height = bmp.getHeight() / BMP_ROWS;
}
@Override
public void update(float fracsec) {
if (x > gameContent.getGameWidth() - width - xSpeed) {
xSpeed = -5;
}
if (x + xSpeed < 0) {
xSpeed = 5;
}
x = x + xSpeed;
currentFrame = ++currentFrame % BMP_COLUMNS;
}
@Override
public void draw(Canvas canvas) {
update(fracsect);
int srcX = currentFrame * width;
int srcY = 1*height - 41;
Rect src = new Rect(srcX +20 , srcY,srcX + width,srcY + height-38); // Generates
Rect dst = new Rect(x,y,x+width -30, y+height-30); // Scales
canvas.drawBitmap(bmp, src, dst, null);
}
}
如何访问第二行以及如何将其更改为第三行或第四行?
到目前为止,我所了解的是,使用 sprite 作为对象作为位图,而不是通过 imageview,代码的代码实现的工作方式不同。关于如何访问精灵表的不同行有什么建议吗?我使用了 android 文档和教程来尽可能地理解这个过程。
这里也是教程: http://www.edu4java.com/en/androidgame/androidgame4.html
【问题讨论】:
标签: java android android-studio android-animation sprite-sheet