按键事件!

landuming 2009-03-02 11:05:29
/**
* summary:捕获当前按键菜单上IDX
*/
protected void keyPressed(int code)
{
if(getGameAction(code) == Canvas.UP && menuIDX-1 >=0 )
{
menuIDX--;
System.out.println(Canvas.UP);
}
if(getGameAction(code) == Canvas.DOWN && menuIDX+1 < mainMenu.length)
{
menuIDX++;
System.out.println(menuIDX);
}
switch(Canvas.FIRE = menuIDX)
{
case 0:
//SCanvas sc = new SCanvas();
//sc.start();
case 1:
case 2:
case 3:
case 4:
}
}
我想键模拟器中间键(FIRE) 来启动另外个类对象! 想了很久,弄了忒久, 没弄好!望大家指点...
...全文
187 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
heavilyarmed 2009-03-08
  • 打赏
  • 举报
回复
都是高手呀
cccloveyf 2009-03-06
  • 打赏
  • 举报
回复
修正下上边的笔误

/**
* summary:捕获当前按键菜单上IDX
*/
protected void keyPressed(int code)
{
if (getGameAction(code) == Canvas.UP) {
if (menuIDX - 1 >= 0) {
menuIDX--;
}
System.out.println(Canvas.UP);
} else if (getGameAction(code) == Canvas.DOWN) {
if (menuIDX + 1 < mainMenu.length) {
menuIDX++;
}
System.out.println(menuIDX);
} else if (getGameAction(code) == Canvas.FIRE) {
switch (menuIDX) {
case 0:
//SCanvas sc = new SCanvas();
//sc.start();
case 1:
case 2:
case 3:
case 4:
}
}
}

cccloveyf 2009-03-06
  • 打赏
  • 举报
回复
根据你的意思,修改了一下。楼主可以试试是否好使。

/**
* summary:捕获当前按键菜单上IDX
*/
protected void keyPressed(int code)
{
if (getGameAction(code) == Canvas.UP && menuIDX-1 >=0) {
if (menuIDX - 1 >= 0) {
menuIDX--;
}
System.out.println(Canvas.UP);
} else if (getGameAction(code) == Canvas.DOWN) {
if (menuIDX + 1 < mainMenu.length) {
menuIDX++;
}
System.out.println(menuIDX);
} else if (getGameAction(code) == Canvas.FIRE) {
switch (menuIDX) {
case 0:
//SCanvas sc = new SCanvas();
//sc.start();
case 1:
case 2:
case 3:
case 4:
}
}
}
zhouhanbo82 2009-03-04
  • 打赏
  • 举报
回复
recieve data:ZTEBW:check 010000000003/ V2.01.00***, len:34
Send to ztebw:ACK:1
recieve data:ZTEBW:download http://172.16.10.242:8080/download/client/010000000003/***, len:70
url:http://172.16.10.242:8080/download/client/010000000003/
#####DownloadApp, appName: 010000000003
newtask
Send to ztebw:ACK:0
httpRequ:GET /download/client/010000000003/suite.jad HTTP/1.1
Accept: */*
Accept-Charset: UTF-8
Connection: Keep-Alive
Host: 172.16.10.242


HttpHeadParse, buf:HTTP/1.1 200 OK
ETag: W/"253-1217839343000"
Last-Modified: Mon, 04 Aug 2008 08:42:23 GMT
Content-Type: text/vnd.sun.j2me.app-descriptor
Content-Length: 253
Date: Mon, 02 Mar 2009 08:27:02 GMT
Server: Apache-Coyote/1.1

MIDlet-1: MainMID,,com.zte.iptv.j2me.game.fightlord.MainMID
MIDlet-Jar-Size: 407256
MIDlet-Jar-URL: suite.jar
MIDlet-Name: FightLordNet
MIDlet-Vendor: ZTE IPTV
MIDlet-Version: V2.01.00
MicroEdition-Configuration: CLDC-1.1
MicroEdition-Profile: MIDP-2.0
WriteFile open file:/var/java/appdb/010000000003/suite.jad
call checkDeleteSuite
Appname: 010000000005/, appsize: 468193, isHall: 0
Appname: 10000001/, appsize: 281105, isHall: 1
sizeOccupied: 749298; sizeletf:479502; sizeNeed: 407509
oldSuite name: 010000000005/, size: 468193
GFB_BlitterFlickerFilter 0 ERROR: range failed
httpRequ:GET /download/client/010000000003/suite.jar HTTP/1.1
Accept: */*
Accept-Charset: UTF-8
Connection: Keep-Alive
Host: 172.16.10.242


HttpHeadParse, buf:HTTP/1.1 200 OK
ETag: W/"407256-1217839343000"
Last-Modified: Mon, 04 Aug 2008 08:42:23 GMT
Content-Type: application/java-archive
Content-Length: 407256
Date: Mon, 02 Mar 2009 08:27:02 GMT
Server: Apache-Coyote/1.1

PK
WriteFile open file:/var/java/appdb/010000000003/suite.jar
GFB_BlitterFlickerFilter 0 ERROR: range failed
Send to ztebw:JAVA:20736
recieve data:ZTEBW:check 10000001/ V2.01.00***, len:30
Send to ztebw:ACK:0
recieve data:ZTEBW:execute 10000001/ V2.01.00 10000001/ 172.16.10.242:6700 100 0000000003 010000000003/***, len:90
Open vplayer successfully vplayer: 0
Send to ztebw:ACK:0
####activeHallClient, appName: 10000001/
stderr print>>>>>>>>argc = 1
JVM GCC version:4.1.1
JVM CurVersion:1.00.001.1001v1
>>>>>>>>argv[0] = javaprocess
init window parameter failed, so adopt the default value
MW CurVersion:1.00.001.1063v1 (20081223-15:12 built)
CompileDir:/home/tangl/proj/frame/resource/platform/mwframe/tools/dboutput
****************GrSetLayerTrans
p .mtf ,strcmpi(p, .mtf) = 0
****in native loop
*************stbuser:100==
*************ipaddress:172.16.10.9==
*************productID:1123345454577747544==
*************mama:
state.nextCommand:2
getInstaller, midsuite:null
nameOfInstaller: null
/*******....start manager now....********/
getInstaller, midsuite:com.sun.midp.dev.DevMIDletSuiteImpl@d590dbc
##############getstbHWVersion:ZXB600V3
##############getstbSWVersion:V30031801
Connect to socket://127.0.0.1:3467
in devMidletSuitestart listen
Imp.getProperty
---jvmwatch: fd 6
*********creat a new sock:9
Connect javawatch Successful!
send to javawatch msg: GET RUN
receive command from javawatch =execute 10000001/ size:280857
getMIDletSuite:10000001/@@midletToRunnull
after File.getStorageRoot()
suite:10000001/Exists
getMIDletSuitedad asd
in getProperty in MiDletsuite get key:MIDlet-Name
before get parametes!!!!!!!!
open parameters.tmp fail
getMIDletSuite:010000000003/@@midletToRunnull
after File.getStorageRoot()
suite:010000000003/Exists
getMIDletSuitedad asd
in getProperty in MiDletsuite get key:MIDlet-Name
before get parametes!!!!!!!!
open parameters.tmp fail
launchSuite:10000001
MwFbLayerControl:0 0 65 0 0
MwFbLayerControl:0 0 65 1 2073410412
MwFbLayerControl:0 0 64 1 6325008
jevent_getInputEvent, type:10, keycode:f887, keystroke.scancode:0
******exitImeMain
the pid is: -1
****in native loop
openJARFile name = /var/java/appdb/10000001/suite.jar
*************stbuser:100==
*************ipaddress:172.16.10.9==
*************productID:1123345454577747544==
*************mama:
state.nextCommand:5
getInstaller, midsuite:null
nameOfInstaller: null
getMIDletSuite:10000001/@@midletToRunnull
after File.getStorageRoot()
suite:10000001/Exists
getMIDletSuitedad asd
in getProperty in MiDletsuite get key:MIDlet-1
jevent_getInputEvent, type:1, keycode:f887, keystroke.scancode:0
defaultEventHanlder keyEvent called
Displayer keyEvent called. type:1keycode:-999
before get parametes!!!!!!!!
open parameters.tmp fail
in getProperty in MiDletsuite get key:MIDlet-2
in getProperty in MiDletsuite get key:MIDlet-1
in getProperty in MiDletsuite get key:MIDlet-Name
create fdMmapi!
============audioOpen fd=12
pPlayInfo->strVodUrl:http://127.0.0.1:10081/music:pcm_11k#
VOD_IDLE_STATE
[BG Music ] play!
VOD2BW_CDN_SS_IP:lParam:2, IP:127.0.0.1
VOD2BW_CDN_SS_IP:lParam:2, IP:127.0.0.1
[BG Music] accept!!!socketfd = 7
BackGroundMusicPlay::right!!!
start vplayer successfully, ret: 0
Open mixer 1!
>>>>>>>>>>>>>>>mmapi handle 1
mmap(0, 0x0001e480, 0x03, 1, 17, 0x04831000) => 0x2a810000
in getProperty in MiDletsuite get key:MIDlet-Name
>>>>>>>>>>收到登录大厅信息:response 110
userkey:2
players:3
gamename:网络斗地主
yanhan0615 2009-03-02
  • 打赏
  • 举报
回复
如果要是做菜单的话可以找J2SE的源码来看看,怎么映射比较合理
kf156 2009-03-02
  • 打赏
  • 举报
回复
GameCanvas是吧
你上下键都知道用
getGameAction(code)== Canvas.UP
getGameAction(code) == Canvas.DOWN
中键也这样用就好了。
然后判断下当前的IDX等于多少,启动相应事件就好了
史前文物 2009-03-02
  • 打赏
  • 举报
回复
如果你不建议代码结构,无所谓代码是否好看,那你就直接写就是了。
不过还是建议你通过改变"state"来控制。 仅供参考:

另外: 一个MIDLET最好就有一个CANVAS!!!

switch(Canvas.FIRE = menuIDX)
{
case 0:
//SCanvas sc = new SCanvas();
//sc.start();
gameState = GAME_START; // GAME_STATE = 1 IS A STATIC FINAL INT.
break;
case 1:
gameState = GAME_PAUSE;
break;
case 2:
case 3:
case 4:
}

// gameUpdata function should be called in run()
private void gameUpdata()
{
switch(gameState)
{
case GAME_START:
changeState(GAME_INITIALISE);
break;
......
}
}

private void changeState(int nextState)
{
switch(nextState)
{
case GAME_INITIALISE:
//TODO: for example --> initialise game res;
break;
}

gameState = nextState;
}

public void run()
{
while(!stopGame)
{
gameUpdata();
}
}

史前文物 2009-03-02
  • 打赏
  • 举报
回复
如果你不建议代码结构,无所谓代码是否好看,那你就直接写就是了。
不过还是建议你通过改变"state"来控制。 仅供参考:

另外: 一个MIDLET最好就有一个CANVAS!!!

switch(Canvas.FIRE = menuIDX)
{
case 0:
//SCanvas sc = new SCanvas();
//sc.start();
gameState = GAME_START; // GAME_STATE = 1 IS A STATIC FINAL INT.
break;
case 1:
gameState = GAME_PAUSE;
break;
case 2:
case 3:
case 4:
}

// gameUpdata function should be called in run()
private void gameUpdata()
{
switch(gameState)
{
case GAME_START:
changeState(GAME_INITIALISE);
break;
......
}
}

private void changeState(int nextState)
{
switch(nextState)
{
case GAME_INITIALISE:
//TODO: for example --> initialise game res;
break;
}

gameState = nextState;
}

public void run()
{
while(!stopGame)
{
gameUpdata();
}
}

13,100

社区成员

发帖
与我相关
我的任务
社区描述
Java J2ME
社区管理员
  • J2ME社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧