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

📄 movecanvas.java

📁 Java ME手机应用开发大全一书的配套光盘上的源码
💻 JAVA
字号:
import javax.microedition.lcdui.game.*;
import javax.microedition.lcdui.*;

public class MoveCanvas extends GameCanvas implements Runnable
{
	//声明图片名称的字符串
	private StringBuffer resPiece1 = new StringBuffer( "/piece1.png");

	private int level = 0;
	
	//声明图片对象
	private Image pieceRedImg;
    //声明游戏精灵对象
	private Sprite sprite;
	//声明图层管理对象	
	private LayerManager manager;
	//设置图片移动位置的X和Y坐标
	int moveX = 0;
	int moveY = 0;

	
	//声明线程类对象
	Thread gameThread;
	
	
	public MoveCanvas(){
		//不抑制键盘,使用MIDP1.0中的按键响应事件
		super(false);
	}
	
	//初始化
	public void init()
	{
		try{
			//获取图片对象
			pieceRedImg  = Image.createImage(resPiece1.toString());
	        //调用初始化游戏屏幕
	    	readScreen();
		}catch(Exception e){
			e.printStackTrace();		
		}

	}
	
	/**
	初始化游戏屏幕的方法 
	*/ 
	public void readScreen(){
		
		try{		

			Graphics g = getGraphics();
			
			sprite = new Sprite( pieceRedImg);
			//小球初始化位置的X和Y坐标
			sprite.move(16,16);
			manager = new LayerManager();
			//向图层添加代表小球的精灵对象
			manager.append(sprite);
			
			manager.paint(g,0,0);
							
		}catch(Exception e){
			System.out.println("exception:"+e.getMessage());
		}		
	}
	
	public void destroy(){
	}
	
	//显示屏幕时触发的方法
	public void showNotify(){
		gameThread = new Thread(this);
		gameThread.start();
		
	}
	//隐藏屏幕时触发的方法
	public void hideNotify()
	{
			gameThread = null;
	}
	
	/**
	* 游戏主循环方法
	*/
	public void run() {
		while (true) {
		    try { 
				Layer layer = manager.getLayerAt(0);
		System.out.println("moveX:moveY"+moveX+" "+moveY);
				
				layer.move(moveX,moveY);
				
				manager.insert(layer,0);
				
				Graphics g  = getGraphics();
								
				g.setColor(0xFFFFFF);

				g.fillRect(0,0,getWidth(),getHeight());
				
				manager.paint(g,0,0);
				//重绘屏幕
				repaint() ;
				
				moveX = 0;
				moveY = 0;
				
				
				try {
					int PanRate = 50;
				    gameThread.sleep(PanRate);
				} catch (java.lang.InterruptedException e) {
				   
				}


		    } catch (Exception e) {
			e.printStackTrace();
		    }
		}
    	}	
	

    /**
     *处理按键连续按下的方法
     */
    protected void keyRepeated(int keyCode) {
        int action = getGameAction(keyCode);
        switch (action) {
        case Canvas.LEFT:
        case Canvas.RIGHT:
        case Canvas.UP:
        case Canvas.DOWN:
            keyPressed(keyCode);
	    break;
        default:
            break;
        }
    }

    /**
     *处理按键按下的方法
     */
    protected void keyPressed(int keyCode) {
	    int action = getGameAction(keyCode);
	    int move = 0;
	    switch (action) { 
	    case Canvas.LEFT:
		moveX = -8;
		break;
	    case Canvas.RIGHT:
		moveX = 8;
		break;
	    case Canvas.DOWN:
		moveY = 8;
		break;
	    case Canvas.UP:
		moveY = -8;
		break;

	    default:
	    moveX = 0;
	    moveY = 0;
		return;
	    }
    }	
	//绘制方法
	public void paint(Graphics g){
		flushGraphics() ;
	}
}

⌨️ 快捷键说明

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