📄 logoncanvas.java
字号:
import java.io.IOException;
import java.util.Timer;
import java.util.TimerTask;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.m3g.Graphics3D;
import javax.microedition.m3g.Loader;
import javax.microedition.m3g.Object3D;
import javax.microedition.m3g.World;
/**
* @author trojan
*
* ����������ʾС��LOGO
*
*/
public class LogonCanvas extends Canvas {
private World world;// logo�
private MyMIDLET midlet;// �������
private Timer timer;// ��ʱ�����
private int startTime;// ���濪ʼʱ��
private int currentTime;// ���浱ǰʱ��
private int pastTime;// �����ȥ��ʱ��
private Graphics3D g3d;// ��D��ͼ����
// ���췽��
public LogonCanvas(MyMIDLET midlet) {
// TODO �Զ���ɹ��캯����
this.midlet = midlet;
initialize();
}
// ��ʼ������
protected void initialize() {
g3d = Graphics3D.getInstance();
// ��ȡģ��
readModel();
startTime = (int) System.currentTimeMillis();
// ���ʱ��
timer = new Timer();
timer.schedule(new LogonTask(), 0, 100);
}
// ��ͼ����
protected void paint(Graphics g) {
// ��ȡ��ȥ��ʱ��
pastTime = getPastTime();
if (pastTime < 3000) {
render(g, pastTime);
}
// LOGO��ʾ�����,ֹͣ��ʱ��,��������ķ�����ʼ��Ϸ
else {
timer.cancel();
midlet.startGame();
}
}
// ��D��Ⱦ����
protected void render(Graphics g, int time) {
g3d.bindTarget(g);
world.animate(pastTime);
g3d.setViewport(getWidth() / 2 - 88, getHeight() / 2 - 110, 176, 220);
g3d.render(world);
g3d.releaseTarget();
}
// ��ȡģ�ͷ���
public void readModel() {
// ��ȡWorld
Object3D[] firstObj = load("logo");
for (int i = 0; i < firstObj.length; i++) {
if (firstObj[i] instanceof World) {
world = (World) firstObj[i];
}
}
}
// ��M3G�ļ��ж�ȡ��D��������
public Object3D[] load(String m3gPath) {
Object3D[] objs;
try {
objs = Loader.load("/m3g/" + m3gPath + ".m3g");
} catch (IOException e) {
e.printStackTrace();
return null;
}
return objs;
}
// ��ȡ��ǰʱ��
protected void getCurrentTime() {
currentTime = (int) System.currentTimeMillis();
}
// ��ȡ��Ϸʱ��
protected int getPastTime() {
getCurrentTime();
return Math.abs(currentTime - startTime);
}
// ��ʱ��,����ˢ��LOGO
class LogonTask extends TimerTask {
public void run() {
repaint();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -