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

📄 playcanvas.java

📁 J2ME手机游戏:是男人就下100层,根据FLASH游戏改写
💻 JAVA
字号:
package src;


import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.game.GameCanvas;
import javax.microedition.lcdui.game.LayerManager;
import javax.microedition.lcdui.game.Sprite;


public class PlayCanvas extends GameCanvas implements Runnable{
   private GameMIDlet midlet = null;
   private LayerManager layerManager = null;
   private BackGroundLayer  backGroundLayer = null;
   private PlayerLayer player = null;
   public static RectangleLayer rectangle = null;
   private Graphics g = null;
   private boolean isPaused = false;

   
	protected PlayCanvas(boolean arg0,GameMIDlet midlet) {
		super(arg0);
		// TODO 自动生成构造函数存根
		this.midlet = midlet;
		g = this.getGraphics();
		layerManager = new LayerManager();
		player = new PlayerLayer(layerManager,this);
		rectangle = new RectangleLayer(layerManager);
		backGroundLayer = new BackGroundLayer(layerManager);
		
	}

	 public void start() {
			
		 Thread t = new Thread(this);
	     t.start();
		}
     public boolean pause()
     {
    	
    	
    	 if(!isPaused)
    		{
    		isPaused = true;
    		return isPaused;
    		}
    	else
    		{
    		isPaused = false;
    		return isPaused;
    		}
    	
    	    
     }
		public void run() {
			// TODO Auto-generated method stub
			
			while(true)
			{
				while(!isPaused)            //未暂停时游戏循环
				{
					this.keyAction();
					long startTime = System.currentTimeMillis();
					backGroundLayer.update();
					rectangle.update();
					player.update();
					draw(g);
					long takenTime = System.currentTimeMillis() - startTime;
				
					if (takenTime < 40)
					{
		                try
		                {
		                    Thread.sleep(40 - takenTime);
		                }
		                catch (Exception ex)
		                {
		                    ex.printStackTrace();
		                }
		            }
				}
			 }
		}
	
	private void draw(Graphics g)
	{
		g.setColor(0x000000);
		g.fillRect(0,0, this.getWidth(), this.getHeight());
		layerManager.paint(g, 0, 0);
	    flushGraphics();
		
	}
	

    private void keyAction()
    {
        int keyStates = getKeyStates();
        Sprite p = player.getPlayer();
       
        if ((keyStates & LEFT_PRESSED) != 0 )    //左
        {
        	if(p.getX() < 15)
        	{
        		p.setPosition(15, p.getY());
        	}
        	
        	if(lastState!=MOVE_LEFT)
        	{
        		p.setFrameSequence(new int []{0,1,2,3});
        		lastState = MOVE_LEFT;
        	}
        	
        	else{
        		p.nextFrame();
        		p.move(-GameMIDlet.MOVE_X_SPEED, 0);
        	}
        }
        else if ((keyStates & RIGHT_PRESSED) != 0 )  //右
        { 
        	if(p.getX() > this.getWidth()-35)
        	{
        		p.setPosition(this.getWidth()-35, p.getY());
        	}
        	
        	if(lastState!=MOVE_RIGHT)
        	{
        		p.setFrameSequence(new int[]{9,10,11,12});
        		lastState = MOVE_RIGHT;
        	}
        	else{
        		p.nextFrame();
        		p.move(GameMIDlet.MOVE_X_SPEED,0);
        	}
        }
        else if(((keyStates & DOWN_PRESSED) != 0 )  )
        {
        	player.update();
        }
        else if(((keyStates & UP_PRESSED) != 0 )  )
        {
           player.moveUP();
        }
       if (keyStates==0 )
        {
        	if(lastState!=MOVE_STOP)
        	{
        		p.setFrameSequence(new int[]{8});
            	lastState=MOVE_STOP;
        	}
        		
        }
       
   }
    
    public GameMIDlet getMIDlet()
    {
    	return midlet;
    }
    
    public BackGroundLayer getBackGroundLayer()
    {
    	return backGroundLayer;
    }
    
    public RectangleLayer getRectangleLayer()
    {
    	return rectangle;
    }
    public PlayerLayer getPlayerLayer()
    {
    	return player;
    }
    

    private  int lastState = -1;
    private final int MOVE_STOP = 0;
    private final int MOVE_LEFT = 1;
    private final int MOVE_RIGHT = 2;

	
}

⌨️ 快捷键说明

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