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

📄 btdemocanvas.java

📁 我自己写的蓝牙例子
💻 JAVA
字号:
import java.util.Vector;

import javax.microedition.lcdui.Canvas;
import javax.microedition.lcdui.Graphics;
import javax.microedition.lcdui.Image;
import javax.microedition.lcdui.game.GameCanvas;


public class BTDemoCanvas extends Canvas  implements BTListener,Runnable {
    
    public byte gameState = 0;

    protected final byte LOGIN = 0;

    protected final byte MAIN = 1;

    protected int width;

    protected int height;
    
    private Thread mainThd = null;

    private long wait = 0;

    private boolean bThread = false;

    protected int counter = 0;
    
    protected int imageCount = 1;
    
    protected Image[] image=new Image[5] ;
    
    public int[][] imgPos={{70,70},{70,70},{70,70},{70,70},{70,70},};
    
    public String name[] ={"","","","","",""};
    
    public NetLayer btnet;

    public boolean startFlag;
    
    public BTDemoCanvas(boolean arg0) {
        
        width = getWidth();
        height = getHeight();
        
        
        resetGameMode(this.LOGIN);
        
        mainThd = new Thread(this);
        bThread = true;
        mainThd.start();
        
        
    }
    protected void keyPressed(int keyCode) {
        int action = getGameAction(keyCode);
          if (action == UP || action == KEY_NUM2) {
              switch (gameState) {
              case LOGIN:
                name[0]="zhang";
                  break;
              case MAIN:
                  imgPos[0][1]-=5;
                  break;
              }
        } else if (action == DOWN || action == KEY_NUM8) {
    
            switch (gameState) {
            case LOGIN:
                name[0]="hai";
                break;
            case MAIN:
                imgPos[0][1]+=5;
                break;
            }
            
        } else if (action == LEFT || action == KEY_NUM4) {
            switch (gameState) {
            case LOGIN:
                name[0]="kevin";
                break;
            case MAIN:
                imgPos[0][0]-=5;
                break;
            }
        } else if (action == RIGHT || action == KEY_NUM6) {
            switch (gameState) {
            case LOGIN:
                name[0]="davy";
                break;
            case MAIN:
                imgPos[0][0]+=5;
                break;
            }
        } else if (action == FIRE || action == KEY_NUM5) {
            switch (gameState) {
            case LOGIN:
                name[0]="center";
                break;
            case MAIN:

                break;
            }

        }
        if(gameState==MAIN)
          btnet.sendString( imgPos[0][0]+"&"+imgPos[0][1]+"&");
    }

    private void resetGameMode(byte gState) {
        counter = 0;
        gameState = gState;
        wait = 70;
        
        final byte NULL = 0;
        final byte GO = 1;
        final byte MENU = 2;
        final byte OK = 3;
        final byte BACK = 1;

        switch (gState) {
        case LOGIN:
            addCommand(BTDemo.inc.ok);
            break;
        case MAIN:
            this.removeCommand(BTDemo.inc.ok);
            break;
        }
        
    }


    public void doOkApp() {
        switch (gameState) {
        case LOGIN:
            if(name[0]=="")
                break;
            resetGameMode(this.MAIN);
            
            btnet = new NetLayer();

            btnet.init( name[0], this );

            btnet.query();
            
            image[0]=this.createImage("pic");

            break;
        case MAIN:

            break;
        }

        
    }
    
    private void gameTime() {

        
        
    }

    protected void paint(Graphics g) {
        
        g.setColor(0x000000);
        g.fillRect(0,0,width,height);
        
        switch (gameState) {
        case LOGIN:
              g.setColor(0xffffff);
              g.drawString("请输入你的名字:"+name[0],width/2 ,height/2,
                      Graphics.HCENTER | Graphics.TOP);

            break;
        case MAIN:
            g.setColor(0xffffff);
            if(startFlag==false)
            g.drawString("等待连接…………",width/2 ,height/2,
                    Graphics.HCENTER | Graphics.TOP);
            else
             for(int i=0;i<imageCount;i++)
             {
                 g.drawImage(image[i],imgPos[i][0] ,imgPos[i][1],Graphics.HCENTER | Graphics.TOP);

                 g.drawString(name[i],imgPos[i][0] ,imgPos[i][1]+18,
                              Graphics.HCENTER | Graphics.TOP);
             }
            break;
        }
        
        
    }

    static Image createImage(String filename) {
        Image image = null;
        try {
            image = Image.createImage("/" + filename + ".png");
        } catch (Exception e) {
        }
        return image;
    }

    public void run() {

        long st = 0;
        long et = 0;

        while (bThread) {
            st = System.currentTimeMillis();
            gameTime();
            repaint();
            et = System.currentTimeMillis();
            counter++;
            if ((et - st) < wait) {
                try {
                    Thread.sleep(wait - (et - st));
                } catch (Exception exp) {
                }
            }
        }   
    }
    /* (非 Javadoc)
     * @see BTListener#handleAction(java.lang.String, java.lang.Object, java.lang.Object)
     */
    public void handleAction( String event, Object param1, Object param2 )
    {
      if ( event.equals( BTListener.EVENT_JOIN ) )
      {
          EndPoint endpt = (EndPoint) param1;
          name[imageCount] = endpt.remoteName;
          startFlag=true;
          image[imageCount++]=this.createImage("pic");

          
      } else if ( event.equals( BTListener.EVENT_SENT ) )
      {

      } else if ( event.equals( BTListener.EVENT_RECEIVED ) )
      {
          EndPoint endpt = (EndPoint) param1;
          ChatPacket msg = (ChatPacket) param2;
        
          int sender;
          for(int i=0;i<imageCount;i++)
              if(endpt.remoteName==name[i])
              {
                  imgPos[i]= decodeMsg(msg.msg);
              }

      } else if ( event.equals( BTListener.EVENT_LEAVE ) )
      {
          EndPoint endpt = (EndPoint) param1; 
          boolean find=false;
          for(int i=0;i<imageCount;i++)
          {
              if(endpt.remoteName==name[i]&&i!=4)
              {
                  find=true;
              }
              if(find==true)
              {
                  name[i]=name[i+1];
                  imgPos[i][0]=imgPos[i+1][0];
                  imgPos[i][1]=imgPos[i+1][1];
                  
              }
          }
          image[imageCount]=null;
          imageCount--;
      }

    }
    
    /**
     * @param msg
     * @return
     */
    private int[] decodeMsg(String msg) {
        String[] result = null;
		int index0 = 0;
		int index1 = 0;		int lines = 0;
		Vector tempR = new Vector();
        boolean wrap;
		while(true)
		{
            wrap = false;
         for( index0=index1;index1<msg.length();index1++)
         {
				if (msg.charAt(index1) == '&') {
					index1++;
                    wrap = true;
					break;
				}

         }
			lines++;
         if (wrap) {
             tempR.addElement(msg.substring(index0, index1 - 1));
         } else {
             tempR.addElement(msg.substring(index0, index1));
         }
         
			if (index1 >= msg.length()) {
                break;
			}
		}  
		result = new String[lines];
		tempR.copyInto(result);
		int[] pos=new int[2];
		pos[0]=Integer.parseInt(result[0]);
		pos[1]=Integer.parseInt(result[1]);
		System.out.println(pos[0]+" "+pos[1]);
		return pos;
    }
    public void addImage(EndPoint param1)
    {
        EndPoint endpt = (EndPoint) param1;
        name[imageCount] = endpt.remoteName;
        startFlag=true;
        image[imageCount++]=this.createImage("pic");
    }
    
}

⌨️ 快捷键说明

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