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

📄 grass.java

📁 《J2ME无线移动游戏开发》一书的配套光盘
💻 JAVA
字号:
package ch09;

import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;

//该类负责绘制草地背景图像

public class Grass
    extends TiledLayer {

  //每副图片宽度为20
  static int TILE_WIDTH = 20;

  //每颗草动画构成图片展示顺序
  static int[] FRAME_SEQUENCE = {
      2, 3, 2, 4};

  //背景中放置草图片的水平个数
  static int COLUMNS;

  //用于控制草皮和草的间隔
  static int CYCLE = 5;

  //声明一个代表绘制背景草Y坐标的变量
  static int TOP_Y;

  //当前图像帧索引
  int mySequenceIndex = 0;

  //代表动态背景索引
  int myAnimatedTileIndex;

  /*
    43.构造器
   */
  public Grass() throws Exception {
    super(setColumns(JumpCanvas.DISP_WIDTH), 1,
          Image.createImage("/icons/cowboy/grass.png"),
          TILE_WIDTH, TILE_WIDTH);
    TOP_Y = JumpManager.DISP_HEIGHT - TILE_WIDTH;
    setPosition(0, TOP_Y);
    myAnimatedTileIndex = createAnimatedTile(2);//动态索引初始指向竖者的草
    for (int i = 0; i < COLUMNS; i++) {
      if ( (i % CYCLE == 0) || (i % CYCLE == 2)) {
        setCell(i, 0, myAnimatedTileIndex);
      }
      else {
        setCell(i, 0, 1);
      }
    }
  }

  /*
    44.根据屏幕宽度,获取背景图片列数
   */
  static int setColumns(int screenWidth) {
    COLUMNS = ( (screenWidth / 20) + 1) * 3;//20为草图片区域的宽度
    return (COLUMNS);
  }

  /*
   45.重置背景草对象状态,在层管理类JumpManager的reset()方法中被调用
   */
  void reset() {
    setPosition( - (TILE_WIDTH * CYCLE), TOP_Y);
    mySequenceIndex = 0;
    setAnimatedTile(myAnimatedTileIndex, FRAME_SEQUENCE[mySequenceIndex]);
  }

  /*
   46.改变背景草状态,在层管理类JumpManager的advance()方法中被调用
   */
  void advance(int tickCount) {
    if (tickCount % 2 == 0) { //控制草的速度
      mySequenceIndex++;
      mySequenceIndex %= 4;
      setAnimatedTile(myAnimatedTileIndex, FRAME_SEQUENCE[mySequenceIndex]);
    }
  }

}

⌨️ 快捷键说明

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