selectpiccanvas.java~166~
来自「j2me实现的手机拼图游戏」· JAVA~166~ 代码 · 共 116 行
JAVA~166~
116 行
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import java.io.*;
public class SelectPicCanvas extends GameCanvas implements Runnable {
private PinTu midlet;
private Image[] picArray;
private int picNum;
private int selectedIndex;
private Image dirImg;
private Sprite leftSprite,rightSprite,menuSprite;
private boolean stoped = false;
private int delay = 120;
private Thread t;
private final int WIDTH,HEIGHT,MIDDLECENTER = Graphics.HCENTER | Graphics.VCENTER;
private int dirY,dirX1,dirX2;
public SelectPicCanvas(PinTu m) {
super(true);
setFullScreenMode(true);
midlet = m;
picNum = midlet.nameArray.length;
selectedIndex = midlet.selectedPicIndex;
picArray = new Image[picNum];
WIDTH = getWidth();
HEIGHT = getHeight();
}
protected void start(){
try{
for (int i = 0; i < picNum; i++)
picArray[i] = Image.createImage(midlet.imgPath + midlet.nameArray[i]);
dirImg = Image.createImage(midlet.imgPath + "dir.png");
}catch(IOException e){
System.out.println("Image load error!");
}
leftSprite = new Sprite(dirImg,10,10);
rightSprite = new Sprite(leftSprite);
rightSprite.setTransform(Sprite.TRANS_MIRROR);
dirY = HEIGHT/2 + picArray[0].getHeight()/2 + 10;
dirX1 = WIDTH/2 - picArray[0].getWidth()/2;
dirX2 = dirX1 + picArray[0].getWidth() - rightSprite.getWidth();
leftSprite.setPosition(dirX1,dirY);
rightSprite.setPosition(dirX2,dirY);
menuSprite = new Sprite(leftSprite);
menuSprite.setTransform(Sprite.TRANS_ROT270);
menuSprite.setPosition(5,HEIGHT - 15);
t = new Thread(this);
t.start();
}
public void run(){
while(!stoped){
draw();
update();
try{
t.sleep(delay);
}catch(InterruptedException e){
//
}
}
}
protected void keyPressed(int key){
if(key == 42){
midlet.showMenuCanvas();
stoped = true;
t.interrupt();
}
}
private void update(){
int keyState = getKeyStates();
if((keyState & LEFT_PRESSED)!=0)
selectedIndex--;
if ((keyState & RIGHT_PRESSED)!=0)
selectedIndex++;
if((keyState & FIRE_PRESSED)!=0){
midlet.selectedPicIndex = selectedIndex;
midlet.showMenuCanvas();
}
if(selectedIndex>picNum -1)
selectedIndex = 0;
if(selectedIndex <0)
selectedIndex = picNum -1;
leftSprite.nextFrame();
rightSprite.nextFrame();
menuSprite.nextFrame();
}
private void draw(){
Graphics g = getGraphics();
g.setColor(255,255,255);
g.fillRect(0,0,WIDTH,HEIGHT);
g.drawImage(picArray[selectedIndex],WIDTH/2,HEIGHT/2,MIDDLECENTER);
g.setColor(0x317E3D);
Font f = Font.getFont(Font.FACE_SYSTEM,Font.STYLE_PLAIN,Font.SIZE_MEDIUM);
g.drawString(midlet.despArray[selectedIndex],WIDTH/2,(dirY - 5),Graphics.HCENTER | Graphics.TOP);
leftSprite.paint(g);
rightSprite.paint(g);
menuSprite.paint(g);
flushGraphics();
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?