📄 gamemidlet.java
字号:
import java.io.IOException;
import java.io.InputStream;
import java.util.Timer;
import java.util.TimerTask;
import java.util.Vector;
import javax.microedition.media.*;
import javax.microedition.lcdui.*;
import javax.microedition.media.control.*;
import javax.microedition.midlet.*;
import javax.microedition.io.*;
public class GameMIDlet extends MIDlet
{
public static GameMIDlet midlet;
public Connection conn;
public static Display disp;
Player player,player2;
Canvas1 canvas1;
BattleCanvas battleCanvas;
CoverCanvas coverCanvas;
VolumeControl vc;
int volume;
private String[] musicUrl;
private String[] battleMusicUrl;
public static boolean showFPS;
public static boolean showMem;
public static boolean isVibratory = true; //振动开关
public static boolean isSonic = true; //声音开关
static MainRole mainRole;
public static boolean isOutBattle;
public Vector enemyVC;
public GameMIDlet()
{
super();
GameMIDlet.midlet=this;
GameMIDlet.disp=Display.getDisplay(this);
volume=60;
musicUrl=new String[5];
musicUrl[0]="/music/ff1town.mid";
musicUrl[1]="/music/ff1overw.mid";
musicUrl[2]="/music/Zelda_Underworld_Theme.mid";
musicUrl[3]="/music/ff1_temple.mid";
musicUrl[4]="/music/Zelda_Underworld_Theme.mid";
battleMusicUrl=new String[3];
battleMusicUrl[0]="/music/ff3jbatt.mid";
battleMusicUrl[1]="/music/kouha-lvlstart.mid";
battleMusicUrl[2]="/music/kouha-deth.mid";
start();
}
protected void start()
{
coverCanvas=new CoverCanvas("cover",disp,null);
coverCanvas.start();
disp.setCurrent(coverCanvas);
this.clearObj(canvas1);
System.gc();
}
protected void startGame()
{
this.clearObj(coverCanvas);
canvas1=new Canvas1("game",disp,null);
canvas1.init();
}
protected void startApp() throws MIDletStateChangeException
{
if(canvas1!=null)
{
canvas1.startGame();
try {
if(player!=null)player.start();
} catch (MediaException e) {
e.printStackTrace();
}
}
}
protected void pauseApp() {
if(canvas1!=null)canvas1.stop();
try {
if(player!=null)player.stop();
} catch (MediaException e) {
e.printStackTrace();
}
}
protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
if(player!=null)
{
player.deallocate();
player.close();
player=null;
}
canvas1=null;
this.notifyDestroyed();
}
public void addVolume()
{
volume = volume + 10;
if(volume > 100)
volume = 100;
if(isSonic)
vc.setLevel(volume);
else
vc.setLevel(0);
}
public void downVolume()
{
volume = volume - 10;
if(volume<0)
volume=0;
if(isSonic)
vc.setLevel(volume);
else
vc.setLevel(0);
}
public void setMusic(int musicIndex)
{
if(player!=null)
{
player.deallocate();
player.close();
player=null;
}
vc = null;
System.gc();
try {
InputStream is = this.getClass().getResourceAsStream(musicUrl[musicIndex]);
player = Manager.createPlayer(is,"audio/midi");
player.realize();
player.setLoopCount(-1);
//player.prefetch();
vc = (VolumeControl)player.getControl("VolumeControl");
if(isSonic)
vc.setLevel(volume);
else
vc.setLevel(0);
} catch (IOException e) {
e.printStackTrace();
} catch (MediaException e) {
e.printStackTrace();
}
}
public void playBattleSound(int index,boolean loop,int volumnOffset)
{
if(player2!=null)
{
player2.deallocate();
player2.close();
player2=null;
}
try {
InputStream is = this.getClass().getResourceAsStream(battleMusicUrl[index]);
player2 = Manager.createPlayer(is,"audio/midi");
player2.realize();
if(loop)
{
player2.setLoopCount(-1);
}
else
{
player2.setLoopCount(1);
}
player2.prefetch();
vc = (VolumeControl)player2.getControl("VolumeControl");
if(isSonic)
vc.setLevel(volume + volumnOffset);
else
vc.setLevel(0);
player2.start();
} catch (IOException e) {
e.printStackTrace();
} catch (MediaException e) {
e.printStackTrace();
}
}
public void stopBattleSound()
{
if(player2!=null)
{
try {
player2.stop();
player2.deallocate();
player2.close();
player2=null;
} catch (MediaException e1) {
e1.printStackTrace();
}
}
}
private boolean soundPlaying;
public void playSound()
{
if(player!=null)
{
try {
//setVolume(volume);
player.start();
} catch (MediaException e1) {
e1.printStackTrace();
}
}
soundPlaying=true;
}
public void stopSound()
{
if(player!=null && soundPlaying)
{
try {
player.stop();
} catch (MediaException e1) {
e1.printStackTrace();
}
}
soundPlaying=false;
}
Vector clearObjVC;
Timer clearTimer;
public void clearObj(Object obj)
{
if(obj==null)return;
if(clearObjVC==null)clearObjVC=new Vector();
clearObjVC.addElement(obj);
if(clearTimer!=null)
{
clearTimer.cancel(); //把前一个计时器取消
clearTimer=null;
}
clearTimer=new Timer();
TimerTask timerTask=new TimerTask()
{
public void run()
{
for(int i=0;clearObjVC!=null && i<clearObjVC.size();i++)
{
Object obj=clearObjVC.elementAt(i);
obj=null;
}
clearObjVC.removeAllElements();
clearTimer=null;
System.gc();
}
};
clearTimer.schedule(timerTask,500);
}
public void toBattle(int enemyType)
{
SceneLib.scenes[SceneLib.currentSceneIndex].setRoleDir(mainRole.currentDirect);
canvas1.stop();
canvas1.inBattle=true;
//this.clearObj(canvas1);
battleCanvas=new BattleCanvas("battle",disp,null);
battleCanvas.setEnemyType(enemyType); //设置明雷或暗雷
if(enemyType==0)
{
Timer timer=new Timer();
TimerTask timerTask=new TimerTask()
{
public void run()
{
battleCanvas.init();
//disp.setCurrent(battleCanvas);
}
};
timer.schedule(timerTask,0);
}
else
{
battleCanvas.init();
//disp.setCurrent(battleCanvas);
}
}
public void outBattle()
{
GameMIDlet.midlet.stopBattleSound();
GameMIDlet.midlet.playSound();
mainRole.clearUpData(); //清除升级显示信息
this.clearObj(battleCanvas);
battleCanvas=null;
System.gc();
isOutBattle=true;
//canvas1=new Canvas1("game",disp,null);
canvas1.loadScene();
mainRole.setShowExcalMark(false);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -