⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 movingsprite.java

📁 塞迪网校J2ME移动应用开发教程的所有源代码.
💻 JAVA
字号:
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;

public class MovingSprite extends Sprite {
  private int             xSpeed, ySpeed;
  private int             action;
  private Canvas          canvas;
  public static final int BA_HIDE = 1;
  public static final int BA_WRAP = 2;
  public static final int BA_BOUNCE = 3;
  public static final int BA_STOP = 4;

  public MovingSprite(Image image, int xMoveSpeed, int yMoveSpeed,
    int boundsAction, Canvas parentCanvas) {
    super(image);

    // Set the XY speed
    xSpeed = xMoveSpeed;
    ySpeed = yMoveSpeed;

    // Set the bounds action
    action = boundsAction;

    // Set the parent canvas
    canvas = parentCanvas;
  }

  public MovingSprite(Image image, int frameWidth, int frameHeight, int xMoveSpeed,
    int yMoveSpeed, int boundsAction, Canvas parentCanvas) {
    super(image, frameWidth, frameHeight);

    // Set the XY speed
    xSpeed = xMoveSpeed;
    ySpeed = yMoveSpeed;

    // Set the bounds action
    action = boundsAction;

    // Set the parent canvas
    canvas = parentCanvas;
  }

  public void update() {
    // Move the sprite based on its speed
    move(xSpeed, ySpeed);

    // Check for a collision with the screen boundary
    checkBounds();
  }

  public int getXSpeed() {
    return xSpeed;
  }

  public int getYSpeed() {
    return ySpeed;
  }

  public void setXSpeed(int xMoveSpeed) {
    xSpeed = xMoveSpeed;
  }

  public void setYSpeed(int yMoveSpeed) {
    ySpeed = yMoveSpeed;
  }

  private void checkBounds() {
    // Hide the sprite if necessary
    if (action == BA_HIDE) {
      if (getX() < 0 || getX() > (canvas.getWidth() - getWidth()) ||
        getY() < 0 || getY() > (canvas.getHeight() - getHeight()))
        setVisible(false);
    }
    // Wrap the sprite if necessary
    else if (action == BA_WRAP) {
      // Wrap the sprite around the edges of the screen
      if (getX() < -getWidth())
        setPosition(canvas.getWidth(), getY());
      else if (getX() > canvas.getWidth())
        setPosition(-getWidth(), getY());
      if (getY() < -getHeight())
        setPosition(getX(), canvas.getHeight());
      else if (getY() > canvas.getHeight())
        setPosition(getX(), -getHeight());
    }
    // Bounce the sprite if necessary
    else if (action == BA_BOUNCE) {
      // Bounce the sprite at the edges of the screen
      if (getX() < 0 || getX() > (canvas.getWidth() - getWidth()))
        xSpeed = -xSpeed;
      if (getY() < 0 || getY() > (canvas.getHeight() - getHeight()))
        ySpeed = -ySpeed;
    }
    // Stop the sprite if necessary
    else {
      if (getX() < 0)
        setPosition(0, getY());
      else if (getX() > (canvas.getWidth() - getWidth()))
        setPosition(canvas.getWidth() - getWidth(), getY());
      if (getY() < 0)
        setPosition(getX(), 0);
      else if (getY() > (canvas.getHeight() - getHeight()))
        setPosition(getX(), canvas.getHeight() - getHeight());
    }
  }
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -