/**********************************************************
File name:MetalMaxMedlet.java
Author:夏文涛
Version:Beta1.0
Data:2007/10/16
Description:
游戏的medlet,进行各种进入游戏前的菜单显示处理
Function List:
1.splashScreenPainted(boolean) 进入闪屏界面
2.splashScreenDone() 闪屏界面显示完毕
3.menuListNewGame() 开始新游戏
4.GameCanvasMenu() 返回medlet,游戏暂停
5.menuListContinue() 游戏继续
6.menuListInstructions() 进入显示游戏介绍界面
7.instructionsBack() 游戏介绍显示完毕
8.menuListRecord() 进入显示记录界面
9.RecordBack() 记录界面显示完毕
10.menuListQuit() 退出菜单选择,游戏结束
11.GameCanvasGameOver() 显示游戏结束界面
12.gameOverDone() 游戏结束界面显示完毕
13.flashBacklight() 手机闪屏效果
14.vibrate() 手机震动效果
*********************************************************/
package com.Izual.MetalMax;
import javax.microedition.lcdui.*;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;
public class MetalMax extends MIDlet implements Runnable,IData {
private MenuList menuList;
private MetalMaxCanvas myCanvas;
private boolean initDone = false;
/*
* 游戏记录,DEMO中由于时间问题还未实现
private static final String RS_NAME = "MetalMaxRecord";
*/
public MetalMax() {
}
protected void destroyApp(boolean arg0) {
if (myCanvas != null) {
myCanvas.stop();
}
}
protected void pauseApp() {
Displayable current = Display.getDisplay(this).getCurrent();
if (current == myCanvas) {
myCanvas.stop();
}
}
protected void startApp() throws MIDletStateChangeException {
//获取系统时间
Runtime rt = Runtime.getRuntime();
//获取游戏开始前的内存情况
long diffstart = rt.totalMemory() - rt.freeMemory();
System.out.println("Memory used Start:" + diffstart);
Displayable current = Display.getDisplay(this).getCurrent();
//如果游戏刚启动,则开始闪屏界面
if (current == null) {
Display.getDisplay(this).setCurrent(new SplashScreen(this));
} else {/*否则进入游戏*/
if (current == myCanvas) {
myCanvas.start();
}
Display.getDisplay(this).setCurrent(current);
}
/*游戏后内存变化情况*/
long diffend = rt.totalMemory() - rt.freeMemory();
System.out.println("Memory used End:" + diffend);
System.out.println("Memory used after operation:"
+ (diffend - diffstart));
}
/*进入闪屏界面*/
void splashScreenPainted() {
new Thread(this).start();
}
/*线程运行*/
public void run() {
init();
}
/*同步的初始化方法*/
private synchronized void init() {
if (!initDone) {
SoundEffects.getInstance();
menuList = new MenuList(this);
myCanvas = new MetalMaxCanvas(this);
initDone = true;
}
}
/*闪屏结束,返回到菜单选择*/
void splashScreenDone() {
init();
Display.getDisplay(this).setCurrent(menuList);
}
/*开始新游戏*/
public void menuListNewGame() {
myCanvas.init(START_MAP);
Display.getDisplay(this).setCurrent(myCanvas);
myCanvas.start();
}
/*游戏暂停*/
public void GameCanvasMenu() {
myCanvas.stop();
menuList.setGameActive(true);
Display.getDisplay(this).setCurrent(menuList);
}
/*游戏继续*/
public void menuListContinue() {
Display.getDisplay(this).setCurrent(myCanvas);
myCanvas.start();
}
/*进入游戏介绍界面*/
public void menuListInstructions() {
Display.getDisplay(this).setCurrent(new InstructionScreen(this));
}
/*游戏介绍界面显示完毕*/
public void instructionsBack() {
Display.getDisplay(this).setCurrent(menuList);
}
/*进入记录界面*/
public void menuListRecord() {
Display.getDisplay(this).setCurrent(new RecordScreen(this));
}
/*记录界面显示完毕*/
public void RecordBack() {
Display.getDisplay(this).setCurrent(menuList);
}
/*退出游戏*/
public void menuListQuit() {
quit();
}
public void quit() {
destroyApp(false);
notifyDestroyed();
}
/*游戏结束界面*/
public void GameCanvasGameOver(long time, int record){
myCanvas.stop();
menuList.setGameActive(false);
Display.getDisplay(this).setCurrent(new GameOverScreen(this));
}
/*游戏结束界面显示完毕*/
public void gameOverDone(){
Display.getDisplay(this).setCurrent(menuList);
}
/*手机闪屏效果*/
public void flashBacklight(int millis){
Display.getDisplay(this).flashBacklight(millis);
}
/*手机震动效果*/
public void vibrate(int millis){
Display.getDisplay(this).vibrate(millis);
}
}
更多源码 | 好库简介 | 网站地图 | 帮助中心 | 版权说明
Copyright© 2009-2012 OKBASE.NET All Rights Reserved 好库网 版权所有