sprite.java
来自「基于J2ME的手机游戏软件。可以控制游戏人物在地图上上下左右行走;可以在地图上放」· Java 代码 · 共 91 行
JAVA
91 行
import javax.microedition.lcdui.Graphics;
public class Sprite
{
private ImageSet imageSet;
private int currentState;
private int currentFrame;
private int totalCycles;
private long currentStateBegin;
private long lastFrameChange;
public Sprite(ImageSet imageSet,int startState,int startFrame)
{
this.imageSet = imageSet;
setCurrentState(startState,true);
setCurrentFrame(startFrame);
}
public void setCurrentFrame(int frame)
{
currentFrame = frame;
}
public void setCurrentState(int state,boolean force)
{
if(currentState != state || force)
{
currentState = state;
currentFrame = 0;
totalCycles = 0;
currentStateBegin = System.currentTimeMillis();
}
}
public void reset()
{
currentFrame = 0;
totalCycles = 0;
currentStateBegin = 0;
lastFrameChange = 0;
}
public long getWhenStateBegin()
{
return currentStateBegin;
}
public long getTimeInCurrentState()
{
return (System.currentTimeMillis() - currentStateBegin);
}
public int getCurrentState()
{
return currentState;
}
public int getCurrentFrame()
{
return currentFrame;
}
public void draw(Graphics gra,int targetX,int targetY,int anchor)
{
imageSet.draw(gra,currentState,currentFrame,targetX,targetY,anchor);
}
public void cycle()
{
if(imageSet.getTotalFrames(currentState) > 1 &&
imageSet.getAnimTime(currentState) > 0)
{
long deltaTime = System.currentTimeMillis() - lastFrameChange;
if(deltaTime > imageSet.getAnimTimePerFrame(currentState))
{
currentFrame++;
lastFrameChange = System.currentTimeMillis();
if(currentFrame >= imageSet.getTotalFrames(currentState))
{
currentFrame = 0;
totalCycles++;
}
}
}
}
public int getTotalCycles()
{
return totalCycles;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?