站内搜索: 请输入搜索关键词

当前页面: 开发资料首页J2ME 专题GameCanvas 类中使用keyReleased()的问题

GameCanvas 类中使用keyReleased()的问题

摘要: GameCanvas 类中使用keyReleased()的问题


-------------------------------------------------------------

我想通过设置一个BOOLEAN变量,当按键按下时为TRUE,当按键松开后重新回到FALSE,这样我就可以实现连续按键了!(这也论坛上的朋友告诉我的,因为我的wtk模拟器不能响应keyRepeated()! 大家试过的朋友/响应keyRepeated()吗?)

发现keyRepeated有时候能响应!有时候没响应


具体代码如下:


protected void keyPressed(int keyCode)
{

releaseKey=false;//用来判断连续按键!
System.out.println(" keyPressed(+ keyState) : " );
//如果游戏暂停,结束,或释放 则按键无效
if((pause==true)|| (gameOver()==true))
{
return;
}
//while(releaseKey==false)//问题1.当加上这个时,控制台没输

//出:keyReleased,也就是说没响应keyReleased(),去掉时,控制台输

//出:keyReleased


{
int keyState = getKeyStates();

System.out.println(" keyPressed() : " + keyState);
//判断上下左右键是否被按下
if (keyState==UP_PRESSED) { //没贴}

if (keyState == LEFT_PRESSED)
{
if(moveLeftAble())
{
for(int i=0;i<4;i++)
{
dynamicPaneCoordinate[i][0]--;
}
}
drawGrid();
}

if (keyState == RIGHT_PRESSED)
{
if(moveRightAble())
{
for(int i=0;i<4;i++)
{
dynamicPaneCoordinate[i][0]++;
}
}
drawGrid();
}






protected void keyReleased(int keyCode)
{
System.out.println( "keyReleased ");
releaseKey=true;
}

问题2.

我试了一下将整个keyPressed()函数放在一个无限循环中,当按下键时,一直执行keyPressed(),当放开键时,程序会执行keyReleased()和接着执行keyPressed()函数

我想问的是:keyReleased()在什么时候被执行呢?keyPressed()还没结束呀!

是在keyPressed()的一次循环之后,还 是立即响应keyReleased,而不管keyPressed()执行到什么地方?

如果是前一种情况,假设keyPressed()中有一个绘图函数!(要执行很长时间),当绘图还没结束时,

我放开键时,响应keyReleased()(这个也需要一段时间),绘图不就会不完整吗?




ding


keyPressed(),keyReleased()不是你去调用的,是系统自动调用的,只要有按键事件手机的操作系统就会调用这两个函数,你只要在里面获得键值就可以了


GameCanvas类如果使用super(true)的话,会屏蔽9种游戏按键.


这么麻烦,下载个WTK2.2不就得了,呵呵~~~


我用的就是WTK2.2!

-------------------------------------------
GameCanvas类如果使用super(true)的话,会屏蔽9种游戏按键.
-------------------------------------
这个我知道!所以我用了super(false)


求求大家看看我的代码后回答,好吗?
谢谢


判断写错了,使用keyStates的判断应该是:
if((states & GameCanvas.UP_PRESSED) != 0){

}


if((states & GameCanvas.UP_PRESSED) != 0){

}


这个我也试过,一样的问题!


顶 学习..


↑返回目录
前一篇: 我想写个往手机上传图片的小工具,请问如何实现?等。。。。。。
后一篇: 继承Layer类时出了问题,编译通不过,又找不到错误?高手们看下(实在是没有多少可用分了)