📄 gamethread.java
字号:
package a.a.a.b;
import javax.microedition.midlet.*;
import java.awt.*;
import java.util.jar.*;
import java.io.*;
import a.a.a.midp.lcdui.*;
public class GameThread extends Thread {
private MIDlet midlet;
private JarClassLoader loader;
private String jarFileName;
private String gameName;
private boolean canRun;
public GameThread(){
this.setDaemon(true);
}
public GameThread(ThreadGroup group,String name){
super(group,name);
this.setDaemon(true);
}
public void setMIDlet(MIDlet m){
midlet=m;
}
public void setJarFileName(String fileName){
jarFileName=fileName;
}
public void run(){
try{
canRun=true;
if(midlet!=null){
startMIDlet();
}else{
startGame(jarFileName);
}
while(canRun&&midlet!=null&&midlet.__started){
sleep(100);
}
}catch(Exception exp){
exp.printStackTrace();
}
}
public String getGameName(){
return gameName;
}
public BQImage createImage(String name) throws IOException{
try{
if(loader!=null){
return BQImage.createImage(loader.getResourceAsStream(name));
}
}catch(Exception e){
}
return null;
}
public void startGame(String jarFileName){
try{
JarFile jarFile=new JarFile(jarFileName);
Manifest manifest=jarFile.getManifest();
Attributes attrs=manifest.getMainAttributes();
String midlet_1=attrs.getValue("MIDlet-1");
int idx=midlet_1.lastIndexOf(',');
String midletClsName=midlet_1.substring(idx+1,midlet_1.length()).trim();
idx=midlet_1.indexOf(',');
gameName=midlet_1.substring(0,idx).trim();
int idx2=midlet_1.indexOf(',',idx+1);
String iconName=midlet_1.substring(idx+1,idx2).trim();
loader=new JarClassLoader(jarFile);
this.setContextClassLoader(loader);
Class cls=loader.loadClass(midletClsName);
Object[] allKeys=attrs.keySet().toArray();
for(int i=0;i<allKeys.length;++i){
String key=((Attributes.Name)allKeys[i]).toString();
MIDlet.addProperties(key,attrs.getValue(key));
}
midlet=(MIDlet)cls.newInstance();
if(iconName.length()!=0){
try{
Image img=javax.microedition.lcdui.Image.createImage(loader.getResourceAsStream(iconName)).getBQImage().getTrueImage();
EmulatorFrame.instance.setIconImage(img);
}catch(Exception exp){
System.err.println("load icon failed!");
}
}
EmulatorFrame.instance.setTitle(e.getString("Title",e.TYPE_OTHER)+"-"+gameName);
startMIDlet();
}catch(Exception exp){
canRun=false;
EmulatorFrame.showMessage(e.getString("StGmErr",e.TYPE_OTHER));
}
}
private void startMIDlet(){
if(midlet!=null){
midlet.start();
}
}
public void stopGame(){
try{
canRun=false;
if(midlet!=null){
synchronized(midlet){
midlet.stop();
//this.join();
midlet=null;
}
}
if(loader!=null){
synchronized(loader){
loader.closeLoader();
loader=null;
}
}
}catch(Exception exp){
exp.printStackTrace();
}
}
public boolean started(){
return canRun;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -