📄 mycanvas.java
字号:
import java.io.IOException;
import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.TiledLayer;
public class MyCanvas extends Canvas implements Runnable {
MyMIDlet mm;
//游戏状态
static int games = Tools.GAME_LOGO;
int mx=-144,my=-112;
//线程计数器
int con=0;
//播放音效
PSound psound;
int soundid=10;
//场景切换
static int move ;
GameTools gts;
//LOGO图片
Image logoimg;
//菜单图片
Image menuimg[];
Menu menu;
//进度条图片
Image loadimg;
int loadw;
//地图
Map1 map;
TiledLayer t1, t2,t3;
int m1[][];
int m2[][];
int m3[][];
Image mapimg;
//英雄
Image roleimg;
Role role;
int rx=160,ry=88;
int index=4;
public MyCanvas(MyMIDlet mm) {
this.mm = mm;
//设置全屏模式
this.setFullScreenMode(true);
map=new Map1();
m1=map.map61;
m2=map.map62;
m3=map.map63;
//音效
psound=new PSound();
psound.InitSound(11);
gts=new GameTools();
//LOGO图片
try {
logoimg=Image.createImage("/name.hfl");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//菜单图片
menuimg=new Image[4];
try {
for(int i=0;i<4;i++){
menuimg[i]=Image.createImage("/menu/"+i+".hfl");
}
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
menu=new Menu(menuimg);
//进度条图片
try {
loadimg=Image.createImage("/load.hfl");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
//开启线程
new Thread(this).start();
}
void loadres(){
t1=null;
t2=null;
t3=null;
mapimg=null;
roleimg=null;
try {
roleimg=Image.createImage("/role.hfl");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
role=new Role(roleimg,16,32);
role.setFrame(index);
try {
mapimg=Image.createImage("/cheng.hfl");
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
t1=new TiledLayer(m1[0].length, m1.length, mapimg, 16, 16);
t2=new TiledLayer(m2[0].length, m2.length, mapimg, 16, 16);
t3=new TiledLayer(m3[0].length, m3.length, mapimg, 16, 16);
for (int i = 0; i < m1.length; i++) {
for (int j = 0; j < m1[0].length; j++) {
t1.setCell(j, i, m1[i][j]);
}
}
role.setPosition(rx,ry);
for (int i = 0; i < m2.length; i++) {
for (int j = 0; j < m2[0].length; j++) {
t2.setCell(j, i, m2[i][j]);
}
}
for (int i = 0; i < m3.length; i++) {
for (int j = 0; j < m3[0].length; j++) {
t3.setCell(j, i, m3[i][j]);
}
}
t1.setPosition(mx,my);
t2.setPosition(mx,my);
t3.setPosition(mx,my);
}
protected void paint(Graphics g) {
//清屏
g.setColor(0xffffff);
g.setClip(0, 0, Tools.ScreenWidth, Tools.ScreenHeight);
g.fillRect(0, 0, Tools.ScreenWidth, Tools.ScreenHeight);
switch (games) {
case Tools.GAME_LOGO:
g.drawImage(logoimg,0,0,0);
if(con>20)
{
games=Tools.GAME_MENU;
}
break;
case Tools.GAME_MENU:
menu.paint(g);
break;
case Tools.GAME_LOAD:
g.setColor(0x000000);
g.fillRect(0, 0, Tools.ScreenWidth, Tools.ScreenHeight);
g.drawImage(loadimg,0,0,0);
g.setColor(0xffff00);
g.drawRect(50,150,76,10);
g.setColor(0xff0000);
g.fillRect(51,151,loadw,9);
break;
case Tools.GAME_RUN:
t1.paint(g);
t2.paint(g);
role.paint(g);
t3.paint(g);
break;
case Tools.GAME_GY:
break;
case Tools.GAME_EXIT:
break;
}
}
protected void keyPressed(int key) {
switch (games) {
case Tools.GAME_LOGO:
break;
case Tools.GAME_MENU:
menu.keypr(key);
break;
case Tools.GAME_LOAD:
break;
case Tools.GAME_RUN:
role.keypr(key);
break;
case Tools.GAME_GY:
break;
case Tools.GAME_EXIT:
break;
}
}
protected void keyReleased(int key) {
switch (games) {
case Tools.GAME_LOGO:
break;
case Tools.GAME_MENU:
break;
case Tools.GAME_LOAD:
break;
case Tools.GAME_RUN:
role.keyre(key);
break;
case Tools.GAME_GY:
break;
case Tools.GAME_EXIT:
break;
}
}
public void run() {
while (true) {
psound.setv(100);
psound.pstsrt();
switch (games) {
case Tools.GAME_LOGO:
break;
case Tools.GAME_MENU:
break;
case Tools.GAME_LOAD:
loadw+=5;
if(loadw>35){
this.loadres();
}
if(loadw>=75){
games=Tools.GAME_RUN;
loadw=0;
psound.InitSound(soundid);
}
break;
case Tools.GAME_RUN:
role.run(this);
break;
case Tools.GAME_GY:
break;
case Tools.GAME_EXIT:
mm.exit();
break;
}
//设置时间片
try {
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
con++;
if(con>9999)
{
con=0;
}
//重绘
repaint();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -