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

📄 tone_player_midlet.java

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

import javax.microedition.lcdui.*;
import javax.microedition.media.*;
import javax.microedition.media.control.*;
import javax.microedition.midlet.*;

public class Tone_Player_MIDlet
    extends MIDlet
    implements CommandListener, ItemStateListener {

  //声明一个Display对象
  private Display mDisplay;

  //声明一个Form对象
  private Form mMainForm;

  //声明一个播放按钮Command对象
  private Command mPlayCommand;

  //声明一个控制音量进度条Gauge对象
  private Gauge mGauge;

  /*
   1.构造器
   */
  public Tone_Player_MIDlet() {
    mMainForm = new Form("播放单音曲调");
    mPlayCommand = new Command("播放", Command.SCREEN, 0);
    mMainForm.addCommand(mPlayCommand);
    mMainForm.addCommand(new Command("退出", Command.EXIT, 0));
    mGauge = new Gauge("调节音量:", true, 10, 2);
    mMainForm.append(mGauge);
    mMainForm.setCommandListener(this);
    mMainForm.setItemStateListener(this);
    mDisplay = Display.getDisplay(this);
    mDisplay.setCurrent(mMainForm);
  }

  //启动应用程序
  public void startApp() {
  }

  //挂起应用程序
  public void pauseApp() {
  }

  //撤销应用程序
  public void destroyApp(boolean unconditional) {
  }

  /*
   2.播放序列音
   */
  private void tone(byte v) {

    byte volume = v;
    byte d = 8;

    byte C4 = ToneControl.C4;
    byte D4 = (byte) (C4 + 2);
    byte E4 = (byte) (C4 + 4);
    byte G4 = (byte) (C4 + 7);
    byte rest = ToneControl.SILENCE;

    byte[] mySequence = {
        ToneControl.VERSION, 1,
        ToneControl.TEMPO, 30,
        ToneControl.RESOLUTION, 64,
        ToneControl.SET_VOLUME, volume,
        ToneControl.BLOCK_START, 0,
        E4, d, D4, d, C4, d, E4, d,
        E4, d, E4, d, E4, d, rest, d,
        ToneControl.BLOCK_END, 0,
        ToneControl.PLAY_BLOCK, 0,
        D4, d, D4, d, D4, d, rest, d,
        E4, d, G4, d, G4, d, rest, d,
        ToneControl.PLAY_BLOCK, 0,
        D4, d, D4, d, E4, d, D4, d, C4, d
    };
    try {
      Player p = Manager.createPlayer(Manager.TONE_DEVICE_LOCATOR);
      p.realize();
      ToneControl tc = (ToneControl) p.getControl("ToneControl");
      tc.setSequence(mySequence);
      p.start();
    }
    catch (Throwable t) {
      Alert a = new Alert("警告:", t.toString(),
                          null, AlertType.ERROR);
      mDisplay.setCurrent(a, mMainForm);
    }
  }

  /*
   3.响应按钮事件
   */
  public void commandAction(Command c, Displayable s) {
    if (c.getCommandType() == Command.EXIT) {
      destroyApp(true);
      notifyDestroyed();
    }
    else if (c == mPlayCommand) {
      tone( (byte) 10);
    }
  }

  /*
   4.响应条目事件
   */
  public void itemStateChanged(Item item) {
    if (item == mGauge) {
      tone( (byte) (mGauge.getValue() * 10));
    }
  }
}

⌨️ 快捷键说明

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