⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 splashtest.java~1~

📁 在J2ME程序中制作Splash画面效果
💻 JAVA~1~
字号:
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("и

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -