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

📄 gamethread.java

📁 J2me唆哈的代码
💻 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 + -