import javax.microedition.midlet.*;
import javax.microedition.lcdui.*;
import java.util.*;
import java.io.*;
public class SplashTest extends MIDlet{
Display display;
MyCanvas myCanvas;
SplashCanvas splash;
public SplashTest(){
display = Display.getDisplay(this);
myCanvas = new MyCanvas();
splash = new SplashCanvas(display, myCanvas);
}
public void startApp(){
display.setCurrent(splash);
}
public void pauseApp(){
}
public void destroyApp(boolean unconditional){
}
class MyCanvas extends Canvas implements CommandListener{
static final int MY_SPRITE = 49;
static final int WALL = 50;
static final int ENEMY = 51;
Command exitCmd;
Image offScreen;
Image mySpriteImage;
Image enemyImage;
Image wallImage;
int x, y;
int startX, startY;
int totalWidth = 120*3, totalHeight = 120;
int cellWidth = 24, cellHeight = 24;
int XCellNum = 15;
int YCellNum = 5;
byte[][] mapData = new byte[YCellNum][XCellNum];
public MyCanvas(){
if(!isDoubleBuffered()){
offScreen = Image.createImage(getWidth(), getHeight());
}
try{
mySpriteImage = Image.createImage("/mySprite.png");
enemyImage = Image.createImage("/enemy.png");
wallImage = Image.createImage("/wall.png");
}
catch(Exception ex){}
getMapData();
exitCmd = new Command("退出", Command.EXIT, 1);
addCommand(exitCmd);
setCommandListener(this);
}
public void paint(Graphics g){
Graphics old = g;
if(offScreen != null){
g = offScreen.getGraphics();
}
g.setColor(0xFFFFFF);
g.fillRect(0, 0, getWidth(), getHeight());
g.translate(startX, startY);
for(int i=0; i < YCellNum; i++){
for(int j=0; j < XCellNum; j++){
byte data = mapData[i][j];
switch(data){
case WALL:
g.drawImage(wallImage, j*cellWidth, i*cellHeight, Graphics.LEFT|Graphics.TOP);
break;
case MY_SPRITE:
g.drawImage(mySpriteImage, x+j*cellWidth, y+i*cellHeight, Graphics.LEFT|Graphics.TOP);
break;
case ENEMY:
g.drawImage(enemyImage, j*cellWidth, i*cellHeight, Graphics.LEFT|Graphics.TOP);
break;
}
}
}
g.translate(-startX, -startY);
if(g != old){
old.drawImage(offScreen, 0, 0, Graphics.LEFT|Graphics.TOP);
}
}
public void keyPressed(int keyCode){
int gameAction = getGameAction(keyCode);
switch(gameAction){
case Canvas.UP:
if(!isWall(x/24, (y-24)/24)){
y-=24;
if(y<=0) y = 0;
startY+=24;
if(startY>=0) startY = 0;
}
repaint();
break;
case Canvas.DOWN:
if(!isWall(x/24, (y+24)/24)){
y+=24;
if(y>=totalHeight) y = totalHeight;
startY-=24;
if(startY<=getHeight()-totalHeight)
startY = getHeight()-totalHeight;
}
repaint();
break;
case Canvas.LEFT:
if(!isWall((x-24)/24, y/24)){
x-=24;
if(x<=0) x = 0;
startX+=24;
if(startX>=0) startX = 0;
}
repaint();
break;
case Canvas.RIGHT:
if(!isWall((x+24)/24, y/24)){
x+=24;
startX-=24;
if(x>=totalWidth) x = totalWidth;
if(startX<=getWidth()-totalWidth)
startX = getWidth()-totalWidth;
}
repaint();
break;
}
}
public void keyReleased(int keyCode){
}
public void keyRepeated(int keyCode){
}
public void commandAction(Command c, Displayable d){
if(c == exitCmd){
destroyApp(true);
notifyDestroyed();
}
}
private void getMapData() {
InputStream is = null;
try {
is = getClass().getResourceAsStream("/map.dat");
}
catch(Exception ex){}
int symbol;
int x = 0, y = 0;
try {
while((symbol = is.read()) != -1){
switch(symbol){
case '\n':
y++;
x = 0;
break;
case '1':
mapData[y][x] = MY_SPRITE;
x++;
break;
case '2':
mapData[y][x] = WALL;
x++;
break;
case '3':
mapData[y][x] = ENEMY;
x++;
break;
default:
x++;
break;
}
}
is.close();
}
catch(Exception ex){}
}
boolean isWall(int x, int y){
if(x >= XCellNum || y >=YCellNum) return true;
if(x < 0 || y < 0) return true;
if(mapData[y][x] == WALL) return true;
else return false;
}
}
class SplashCanvas extends Canvas{
Display display;
Displayable nextScreen;
int holdTime;
Timer splashTimer;
Image image;
public SplashCanvas(Display display, Displayable nextScreen){
this.display = display;
this.nextScreen = nextScreen;
try{
image = Image.createImage("/splash.png");
}
catch(Exception ex){}
splashTimer = new Timer();
display.setCurrent(this);
holdTime = 6000;
}
public void paint(Graphics g){
g.setColor(0xFFFFFF);
g.fillRect(0, 0, getWidth(), getHeight());
g.drawImage(image, 0, 0, Graphics.LEFT|Graphics.TOP);
g.setColor(0);
g.drawString("我的第一个游戏", getWidth()/2,
getHeight()/2, Graphics.HCENTER|Graphics.TOP);
g.drawString("版本:"+getAppProperty("MIDlet-Version"), getWidth()/2,
getHeight()-20, Graphics.HCENTER|Graphics.TOP);
}
public void showNotify(){
splashTimer.schedule(new SplashTask(this), holdTime);
}
public void setHoldTime(int holdTime){
this.holdTime = holdTime;
}
public void nextScreen(){
display.setCurrent(nextScreen);
}
}
class SplashTask extends TimerTask{
SplashCanvas scanvas;
public SplashTask(SplashCanvas scanvas){
this.scanvas = scanvas;
}
public void run(){
scanvas.nextScreen();
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
在J2ME程序中制作Splash画面效果.zip
共11个文件
png:5个
dat:2个
jpg:1个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 23 浏览量
2023-03-09
13:50:13
上传
评论
收藏 75KB ZIP 举报
温馨提示
在J2ME程序中制作Splash画面效果.zip
资源推荐
资源详情
资源评论
收起资源包目录
在J2ME程序中制作Splash画面效果.zip (11个子文件)
A
SplashTest
src
SplashTest.java 6KB
SplashTest.java~1~ 6KB
res
air.gif 2KB
mySprite.png 388B
splash.png 2KB
wall.jpg 2KB
background.png 63KB
map.dat 78B
wall.png 1KB
enemy.png 625B
map0-0.dat 33B
共 11 条
- 1
资源评论
N201871643
- 粉丝: 795
- 资源: 2280
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功