思想决定一切,请改变你心灵的角度。
首页 arrow 会员博客 arrow MIDP1.0的按键响应!

MIDP1.0的按键响应! 输出PDF 打印 E-mail
Author Author: j2_lover | Date Date: 2008-04-10 | View Count View: 954 | section & Category 会员博客 -  个人博客

按键响应有3种情况,

1,当按键被按下时

     protected void keyPressed(int keyCode)

2,当按键被松开时

protected void keyReleased(int keyCode)

3,当按键连续响应的时候

protected void  keyRepeated(int keyCode)

在这里用最简单的一个事例来实现按键响应的功能:

首先我们载入资源图片:(不知道怎么在这个博客上贴图,读者可自己找一张飞机小图放如res文件里----最好移动的时候不需要更换资源图片的)

创建GameMidlet类,并启动Canvas类:

import javax.microedition.lcdui.Display;
import javax.microedition.midlet.MIDlet;
import javax.microedition.midlet.MIDletStateChangeException;


public class GameMidlet extends MIDlet {
private GameCan gc;
 public GameMidlet() {
  gc=new GameCan();
 }

 protected void destroyApp(boolean arg0) throws MIDletStateChangeException {
  // TODO Auto-generated method stub

 }

 protected void pauseApp() {
  // TODO Auto-generated method stub

 }

 protected void startApp()  {
  Display.getDisplay(this).setCurrent(gc);

 }

}

/*--------------------------------------------------------------------------------------------------------------------*/

GameCan类的实现代码;

import java.io.IOException;

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

public class GameCan extends Canvas implements Runnable {
 private int width, height;

 private Image plane;

 private int planeY;

 private int planeX;

 private Thread trd;

 private boolean isRung;

 public GameCan() {
  isRung=true;
  width = getWidth();
  height = getHeight();

//设置飞机的初始位子
  planeX = width / 2;
  planeY = height / 2;
  try {
   plane = Image.createImage("/player.png");
  } catch (IOException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }

//构造并启动线程:
  trd = new Thread(this);
  trd.start();
 }

 protected void paint(Graphics g) {

//刷屏,不然会出现重影
  g.setColor(0xffffff);
  g.fillRect(0, 0, width, height);

//绘制飞机
  g.drawImage(plane, planeX, planeY, 0);
 }

 protected void keyPressed(int keyCode) {
  int action = getGameAction(keyCode);
  switch (action) {//对操控对象上下左右的操作
  case UP:
   planeY-=10;
   break;
  case DOWN:
   planeY+=10;
   break;
  case RIGHT:
   planeX+=10;
   break;
  case LEFT:
   planeX-=10;
   break;
  }
 }

 public void run() {
  while(isRung){
  try {
   repaint();
   trd.sleep(10L);
  } catch (InterruptedException e) {
   // TODO Auto-generated catch block
   e.printStackTrace();
  }
  }

 }

}
这样你的飞机就可以随着 你的操控动起来!

细心的读者可能会发现几个问题:

1:我们在这里只用了keyPressed的方法。

2:飞机是按一下才动一下,不能连续的响应。

困了```下次再继续吧````



收藏到您的网摘: Google书签 Yahoo书签 雅虎收藏夹 365Key网摘 新浪ViVi 百度收藏 天极网摘 diglog 和讯网摘 POCO网摘 YouNote网摘 博拉网 天下图摘 spurl blogmarks BlinkList reddit digg Del.icio.us

本文关键字本文关键字: MIDP1.0  按键  响应  

阅读数: 955 | 打印 | E-mail

  评论 (3)
RSS评论
 1 评论者 狼大帅, 时间 2008-04-28 14:40
技术含量太低
 2 评论者 WhangHeYing, 时间 2008-06-10 10:00
我也有同感,虽然自己也是刚学习手机游戏开 发,但这个我在入门的第二个星期大概就会了 。 
不过什么东西都是从低到高的, 
如果刚刚接触开发一个星期,我想还有有用的 !
 3 评论者 wupei, 时间 2008-06-11 13:18
建议归建议 
但是说别人技术含量低,可不是什么好习惯~~

发表评论

姓名:
E-mail
您的网站/主页
标题:
评论:

验证码:* Code
若有人评论本文,请E-mail通知我。

(invoke different cellphone's softkey) < 上一篇   下一篇 > (platformRequest)