📄 firstcanvas.java
字号:
package com.gowin.firstgame;
import java.io.IOException;
import javax.microedition.lcdui.*;
import javax.microedition.lcdui.game.*;
import javax.microedition.media.Player;
public class FirstCanvas extends GameCanvas implements Runnable{
private boolean isPlay;
private long delay;
private int currentX;
private int currentY;
private int width;
private int height;
//spriite
private Sprite sprite;
//background
private Sprite backGroundSprite;
private LayerManager layerManager;
private TiledLayer tiledBackGround;
protected FirstCanvas() throws Exception {
super(true);
width = getWidth();
height = getHeight();
currentX = width/2;
currentY = height/2;
delay = 5;
//sprite
Image imageTemp = null;
imageTemp = Image.createImage("/anim4.png");
sprite = new Sprite( imageTemp , 31 , 31 );
//layermanage
//Image backGroundImg = Image.createImage("/background.PNG");
//backGroundSprite = new Sprite(backGroundImg,640,640);
layerManager = new LayerManager();
tiledBackGround = initBackGround();
layerManager.append(sprite);
layerManager.append(tiledBackGround);
}
private TiledLayer initBackGround() throws Exception{
// TODO Auto-generated method stub
Image tiledImg = Image.createImage("/background.png");
TiledLayer tempLayer = new TiledLayer( 5 , 5 , tiledImg , 640/5 , 640/5 );
int[] map = {1,2,3,4,5,6,7,8,9,10,1,2,3,4,5,6,7,8,9,10};
for( int i = 0 ; i < map.length ; i ++ )
{
int column = i%5;
int row = (i-column)/5;
tempLayer.setCell( column,row,map[i]);
}
return tempLayer;
}
public void start()
{
isPlay = true;
Thread t = new Thread(this);
t.start();
}
public void stop()
{
isPlay = false;
}
public void run() {
Graphics g = getGraphics();
while( true == isPlay )
{
input();
drawScreen(g);
try{
Thread.sleep(delay);
}catch(InterruptedException ie)
{
//do nothing
}
}
}
private void drawScreen(Graphics g) {
g.setColor(255, 255, 255);
g.fillRect(0,0,width,height);
//g.setColor(255, 0, 0);
//g.drawString( "X" , currentX , currentY , Graphics.TOP|Graphics.LEFT );
//sprite
sprite.setPosition( currentX , currentY );
layerManager.setViewWindow(currentX-width/2, currentY-height/2 , width - 40, height - 40);
layerManager.paint(g, 20 , 20);
flushGraphics();
}
private void input() {
int keyStates = getKeyStates();
sprite.setFrame(0);
if( ( keyStates & LEFT_PRESSED ) != 0)
{
currentX = Math.max(0 , currentX - 1);
//sprite.setFrame(1);
}
else if( ( keyStates & RIGHT_PRESSED ) != 0)
{
if ( currentX + 31 < tiledBackGround.getWidth())
currentX = Math.min(tiledBackGround.getWidth() , currentX + 1);
//sprite.setFrame(3);
}
else if( ( keyStates & UP_PRESSED ) != 0)
{
currentY = Math.max(0 , currentY - 1);
//sprite.setFrame(2);
}
else if( ( keyStates & DOWN_PRESSED ) != 0)
{
if( currentY + 31 < tiledBackGround.getHeight() )
currentY = Math.min(tiledBackGround.getHeight() , currentY + 1);
//sprite.setFrame(4);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -