package code.kalter.longflight; import java.io.IOException; import java.util.Vector; import javax.microedition.lcdui.Graphics; import javax.microedition.lcdui.Image; /** * Спрайт - основной графический элемент * * @author KalterFive */ public class Sprite { protected final Image image; private int positionX; private int positionY; // события private Vector eventListener; public Sprite(Image image, int positionX, int positionY) { this.image = image; this.positionX = positionX; this.positionY = positionY; eventListener = new Vector(1); } public Sprite(String path, int positionX, int positionY) throws IOException { this(Image.createImage(path), positionX, positionY); } public void paint(Graphics graph) { graph.drawImage(image, positionX, positionY, 0); } public void addEvent(EventListener event) { eventListener.addElement(event); } // попытаться возбудить события public void exciteEvent() { for (int i = 0; i < eventListener.size(); i++) { EventListener event = (EventListener) eventListener.elementAt(i); if ((event != null) && (event.is())) { event.event(); } } } public EventListener getEvent(int number) throws ArrayIndexOutOfBoundsException { return (EventListener) eventListener.elementAt(number); } // удалить событие без сдвига (то есть оnullить его) public void removeEvent(int number) throws ArrayIndexOutOfBoundsException { eventListener.setElementAt(null, number); } public boolean isEntrySet(int positionX, int positionY) { return (positionX >= this.positionX) && (positionX <= this.positionX + getWidth()) && (positionY >= this.positionY) && (positionY <= this.positionY + getHeight()); } public void moveDown(int speed) { positionY += speed; } public void moveRight(int speed) { positionX += speed; } public void moveUp(int speed) { moveDown(-speed); } public void moveLeft(int speed) { moveRight(-speed); } public int getX() { return positionX; } public int getY() { return positionY; } public int getWidth() { return image.getWidth(); } public int getHeight() { return image.getHeight(); } protected void setX(int x) { this.positionX = x; } protected void setY(int y) { this.positionY = y; } }