📄 sprite.java
字号:
import java.awt.*;
/*
精灵对象代表一个可操作、可显示的对象,可以是图片等待
*/
public abstract class Sprite
{
//新位置
private Rectangle spriteArea;
//旧位置
private Rectangle oldSpriteArea;
//是否需要重新显示
private boolean refreshNeeded;
//构造函数
public Sprite(Rectangle spriteArea)
{
this.spriteArea = spriteArea;
this.oldSpriteArea = spriteArea;
refreshNeeded = true;
}
//设置需要重新显示
public final void forceRefresh()
{
refreshNeeded = true;
}
//改变精灵的位置
public void changeSpriteArea(Rectangle newArea)
{
spriteArea = newArea;
refreshNeeded = true;
}
//相对移动精灵
public final void relativeMove(Point p)
{
spriteArea = new Rectangle(spriteArea);
spriteArea.translate(p.x, p.y);
refreshNeeded = true;
}
//相对移动精灵
public final void relativeMove(int x, int y)
{
spriteArea = new Rectangle(spriteArea);
spriteArea.translate(x, y);
refreshNeeded = true;
}
//绝对移动精灵
public final void absoluteMove(Point p)
{
spriteArea = new Rectangle(p, new Dimension(spriteArea.width, spriteArea.height));
refreshNeeded = true;
}
//绝对移动精灵
public final void absoluteMove(int x, int y)
{
spriteArea = new Rectangle(x, y, spriteArea.width, spriteArea.height);
refreshNeeded = true;
}
//得到精灵位置的左上角坐标
public final Point getSpritePosition()
{
return spriteArea.getLocation();
}
//得到精灵的位置
public final Rectangle getSpriteArea()
{
return spriteArea;
}
//刷新精灵,即从内存缓存图片中清除此精灵
public final void refresh(Image background, Graphics output, GameApplet applet)
{
if (refreshNeeded)
{
output.setClip(oldSpriteArea.x, oldSpriteArea.y, oldSpriteArea.width, oldSpriteArea.height);
output.drawImage(background, 0, 0, applet);
oldSpriteArea = spriteArea;
refreshNeeded = false;
}
}
//重新显示精灵
public abstract void paint(Graphics g, GameApplet applet);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -