📄 bravecanvas.java
字号:
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.Graphics;
import java.io.IOException;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.TiledLayer;
public class BraveCanvas extends GameCanvas implements Runnable
{
private boolean sign;
private Graphics g;
private Hero hero;
private Image upimage;
private Image downimage;
private Image leftimage;
private Image rightimage;
private Image talkImage;
private TiledLayer backgroundMap;
private TiledLayer foregroundMap;
private BraveManager braveManager;
//该标志位判断对话是否开始
public static boolean isTalk;
//该标志为判断对话是否可以重新开始,默认可以重新开始
public static boolean isTalkSign = true;
//当前的人物方向(碰撞检测用)
public static int way = 0;
public BraveCanvas()
{
super(true);
try
{
backgroundMap = Scene.createTiledLayerByBackground(
Image.createImage("/background.png"));
foregroundMap = Scene.createTiledLayerByForeground(
Image.createImage("/foreground.png"));
upimage = Image.createImage("/hero_up.png");
downimage = Image.createImage("/hero_down.png");
leftimage = Image.createImage("/hero_left.png");
rightimage = Image.createImage("/hero_right.png");
talkImage = Image.createImage("/talk.png");
braveManager = new BraveManager();
braveManager.setBraveCanvas(this);
hero = new Hero(upimage, 17, 26);
//hero.setFrameSequence(new int[]{1, 1, 0, 0, 1, 1, 2, 2});
hero.setBraveCanvas(this);
hero.setBraveManager(braveManager);
hero.init(120, 120);
}
catch(Exception e)
{
e.printStackTrace();
}
}
public void startup()
{
this.sign = true;
Thread thread = new Thread(this);
thread.start();
}
public void run()
{
g = getGraphics();
braveManager.insert(hero, 0);
braveManager.insert(foregroundMap, 1);
braveManager.insert(backgroundMap, 2);
while(sign)
{
try
{
input(g);
BraveCanvas.isTalkSign = true;
paint(g);
Thread.sleep(15);
}
catch(Exception e)
{
e.printStackTrace();
}
}
}
public void input(Graphics g) throws IOException
{
int keystates = getKeyStates();
switch(keystates)
{
case UP_PRESSED:
BraveCanvas.way = UP_PRESSED;
hero.moveUp(upimage);
break;
case DOWN_PRESSED:
BraveCanvas.way = DOWN_PRESSED;
hero.moveDown(downimage);
break;
case LEFT_PRESSED:
BraveCanvas.way = LEFT_PRESSED;
hero.moveLeft(leftimage);
break;
case RIGHT_PRESSED:
BraveCanvas.way = RIGHT_PRESSED;
hero.moveRight(rightimage);
break;
case FIRE_PRESSED:
//当用户按下对话键时候,首先判断对话是否可以重新开始
//只有对话可以重新开始后才能再次开始对话
if(hero.eventActionExist(98))
{
if(BraveCanvas.isTalkSign)
{
BraveCanvas.isTalk = true;
}
}
break;
}
hero.afresh();
braveManager.afresh();
}
public void paint(Graphics g)
{
g.setColor(0x000000);
g.fillRect(0, 0, getWidth(), getHeight());
g.setColor(0x000000);
braveManager.paint(g, 0, 0);
if(BraveCanvas.isTalk)
{
//加入对话,这里只是简单做个例子。应该给对话规定编号,然后从文件中相应的编号中读取
hero.talk("英雄", talkImage, "这是一个小镇", g);
}
else
{
flushGraphics();
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -