J2ME开发手机游戏的几个技术问题

时间:2020-12-27 03:22:17
大家好,我现在在开发一个手机游戏作为毕设,遇到很多问题,请各位高人指点。
我是用Eclipse3.0+EclipseME0.4.1+j2sdk1.5.0+WTK2.1来开发的,游戏要求支持2.0
    首先说打包的问题,我的程序在Eclipse中可以运行,打包成jar文件后再用WTK运行的话就有问题。显示NullPointerException错误,请问问题可能出在什么地方呢??
    还有一个关于键盘输入的问题,我做的是一个类似于推箱子的游戏,也是一个主角在方格的地图上移动。我现在的主角加入了动画效果,就是按一次方向键分几步动画走到下一格,这需要一段时间。现在的问题是在这段时间中按方向键的话,会储存这个输入,在移动结束后自动进行这个输入。我希望在它移动的时候不要相应任何的键盘输入,请问怎么才能实现?
    现在主要问题是这两个,希望大虾帮忙,谢谢。

12 个解决方案

#1


第一问题有几种可能:
1.打包前改动了资源,试试刷新一下工程(按F5)再打包,
2.检查你的资源文件位置,wtk默认是在res中,elcipse则可以定义(如果你不是用wtk打开工程运行,而是用模拟器直接运行jad/jar则无此问题)

第二个问题:
不知道你怎样使用键盘的,如果自己做的键盘缓冲,那每帧前将缓冲清空即可.
也许你只是用一个变量记录某个键(比如方向键)是否被按下,那可以通过状态机来决定是否记录按键-即在箱子移动过程中不记录按键

#2


先谢谢你
第一个问题,我就是用模拟器直接运行jad/jar文件出现的问题啊。而且我觉得jad文件写的没什么问题。
第二个问题,我用的是keyPressed()方法,直接判断获得的按键类型,没有用逐帧刷新的方法。请问用这种方法的情况,有解决我的问题的办法吗?

#3


设一个标志位就可以了

#4


设过,不好使

#5


我在程序中用到了RMS,NullPointerException错误是否可能与这个有关系?

#6


大家帮帮忙啊,毕设快完成不了了。

#7


1.检查下jar里面资源是否都导入了,再检查下程序中资源导入的路径是否正确。
2。如果1没问题,有可能是RMS或其他的问题

#8


第一个我不清楚,不知你是否仔细看了elipseme的设置方法,比如超时设置。。

第二个建议你看一下将midp1.0转成2.0的例程,在gameloop里面判断按键很容易就避免这个问题了。

#9


第二个问题如果用keyPressed的话,只要设个标志位,在动画结束前,不接受输入就可以了

#10


就是设置标志位,肯定好使,看看设置的对不对??!!

#11


第二个问题解决的方法很多的。好好想想。
1.0做动画,,,setClip();

#12


首先说打包的问题,我的程序在Eclipse中可以运行,打包成jar文件后再用WTK运行的话就有问题。显示NullPointerException错误,请问问题可能出在什么地方呢??


re:可能是图片引起的,原因很可能是图片的位置不对,
这样Image.CreatImage()之后产生的图片就只有一个空指针。


还有一个关于键盘输入的问题,我做的是一个类似于推箱子的游戏,也是一个主角在方格的地图上移动。我现在的主角加入了动画效果,就是按一次方向键分几步动画走到下一格,这需要一段时间。现在的问题是在这段时间中按方向键的话,会储存这个输入,在移动结束后自动进行这个输入。我希望在它移动的时候不要相应任何的键盘输入,请问怎么才能实现?

re:设置一个标志boolean flag=false;在动画的Thread开始运行的前,flag=false;动画结束之后flag=true;在按键事件发生时,检测flag,如果flag==false,就忽略这次按键事件,反之,响应按键事件。

#1


第一问题有几种可能:
1.打包前改动了资源,试试刷新一下工程(按F5)再打包,
2.检查你的资源文件位置,wtk默认是在res中,elcipse则可以定义(如果你不是用wtk打开工程运行,而是用模拟器直接运行jad/jar则无此问题)

第二个问题:
不知道你怎样使用键盘的,如果自己做的键盘缓冲,那每帧前将缓冲清空即可.
也许你只是用一个变量记录某个键(比如方向键)是否被按下,那可以通过状态机来决定是否记录按键-即在箱子移动过程中不记录按键

#2


先谢谢你
第一个问题,我就是用模拟器直接运行jad/jar文件出现的问题啊。而且我觉得jad文件写的没什么问题。
第二个问题,我用的是keyPressed()方法,直接判断获得的按键类型,没有用逐帧刷新的方法。请问用这种方法的情况,有解决我的问题的办法吗?

#3


设一个标志位就可以了

#4


设过,不好使

#5


我在程序中用到了RMS,NullPointerException错误是否可能与这个有关系?

#6


大家帮帮忙啊,毕设快完成不了了。

#7


1.检查下jar里面资源是否都导入了,再检查下程序中资源导入的路径是否正确。
2。如果1没问题,有可能是RMS或其他的问题

#8


第一个我不清楚,不知你是否仔细看了elipseme的设置方法,比如超时设置。。

第二个建议你看一下将midp1.0转成2.0的例程,在gameloop里面判断按键很容易就避免这个问题了。

#9


第二个问题如果用keyPressed的话,只要设个标志位,在动画结束前,不接受输入就可以了

#10


就是设置标志位,肯定好使,看看设置的对不对??!!

#11


第二个问题解决的方法很多的。好好想想。
1.0做动画,,,setClip();

#12


首先说打包的问题,我的程序在Eclipse中可以运行,打包成jar文件后再用WTK运行的话就有问题。显示NullPointerException错误,请问问题可能出在什么地方呢??


re:可能是图片引起的,原因很可能是图片的位置不对,
这样Image.CreatImage()之后产生的图片就只有一个空指针。


还有一个关于键盘输入的问题,我做的是一个类似于推箱子的游戏,也是一个主角在方格的地图上移动。我现在的主角加入了动画效果,就是按一次方向键分几步动画走到下一格,这需要一段时间。现在的问题是在这段时间中按方向键的话,会储存这个输入,在移动结束后自动进行这个输入。我希望在它移动的时候不要相应任何的键盘输入,请问怎么才能实现?

re:设置一个标志boolean flag=false;在动画的Thread开始运行的前,flag=false;动画结束之后flag=true;在按键事件发生时,检测flag,如果flag==false,就忽略这次按键事件,反之,响应按键事件。