📄 spriteclip.java
字号:
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.Graphics;
public class SpriteClip {
private long delayMS;
protected int iCount, state, delay;
protected int w, h;
private int[][] iArray;
private Image image;
private void setClip(Graphics g, int x, int y) {
g.setClip(x, y, w, h);
g.drawImage(image, x - iCount * w - iArray[state][2],
y - iArray[state][3], Actor.G_TOP_LEFT);
}
public final void drawClip(Graphics g, int x, int y) {
if (iArray[state][4] != 0) {
setClip(g, x, y);
if (spriteDelay(delay)) {
iCount++;
if (iCount > iArray[state][4]) {
iCount = 0;
}
}
} else if (iArray[state][5] != 0) {
for (int i = 0; i < iArray[state][5]; i++) {
setClip(g, x, y + i * h);
}
} else {
setClip(g, x, y);
}
}
public void init(Image imageArg, int stateTotal) {
image = imageArg;
iArray = new int[stateTotal][6];
}
public void setArray(int state, int clipW, int clipH, int offsetX,
int offsetY, int row, int length) {
iArray[state][0] = clipW;
iArray[state][1] = clipH;
iArray[state][2] = offsetX;
iArray[state][3] = offsetY;
iArray[state][4] = row;
iArray[state][5] = length / iArray[state][1];
}
public void setState(int stateArg, int delayArg) {
state = stateArg;
delay = delayArg;
w = iArray[state][0];
h = iArray[state][1];
iCount = 0;
delayMS = System.currentTimeMillis();
}
public final boolean spriteDelay(int delay) {
if (System.currentTimeMillis() - delayMS > delay) {
delayMS = System.currentTimeMillis();
return true;
}
return false;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -