当前页面: 开发资料首页 → 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){
}
这个我也试过,一样的问题!
顶 学习..