懂J2ME写游戏的进来帮忙下

来源:百度知道 编辑:UC知道 时间:2024/05/30 15:22:38
本人新手 在尝试写一个回合制的RPG 游戏
遇见了一些问题 想请教一下`
我的主角出生在"村庄(MainCanvas)"里,接着他要出来到"村外(OutCanvas)"遇见敌人进行打斗.
我用的是OutCanvas 继承MainCanvas这样就可以继承 主角的走动及碰撞的方法` 但是OutCanvas 里面NEW了个线程,觉得很浪费,但是不知道如何优化` 画面明显比没有写Outcanvas前卡了很多`我还没有做打斗的FightCanvas 我想在那个里面如果在有个线程 游戏就没有进行下去的价值了 还有一个问题在MainCanvas的地图里面还要有商店 进商店的话我是不是又要写个类在创建线程(我尝试在MainCanvas里面写进商店的方法,但是MainCanvas里面的地图的碰撞检测还是会作用于商店里面,这样人物在商店里面平地上面也可能无法走过)?那样的话我想我的游戏卡的是不能在手机上面运行的.希望高手能一下,小弟感激不尽,分不多,因为近几天我可能有很多问题还要问的, 希望大家给我一点思路` 非常感谢,我真的很想做好这个游戏,谢谢`!

非常非常同情你 但帮不了你 我初学 水平跟你差太多

OutCanvas里不要线程,把那里面要用到线程的也放在MainCanvas里的线程里

其实RPG的话不建议用线程,也就是不建议用game包下的GameCanvas类(你是用的这个吧,因为你谈到了线程),GameCanvas个人认为只有在一定使用双缓冲或是需要快速更新画面等的地方使用,否则还是用传统的Canvas类比较好,因为Canvas可以不需要线程而只需要一个定时器就行,这样的话系统就不会有格外的线程开销了.我读过好几个RPG游戏的源代码,都是统一使用的定时器.

如果一定要线程,建议在重复执行的地方千万不要创建新的对象,这样每一次执行都会创建对象并且用过一次就扔掉,虽然JAVA有垃圾回收机制,但大大拖慢系统运行速度.比如你想在屏幕上长时间显示一幅图:
//前面一大堆import
while(true){
Image image=createImage();/*假设已经正确定义生成图片的 createImage()方法*/
g.drawImage(image,getWidth()/2,getHeight()/2,0);
}
以上代码就属于不正确使用线程.因为每次运行线程都要创建一个Image对象,用了一次就扔了会大大影响速度,正确的作法是在运行之前就创建好一个Image对象,线程运行时反复画这幅图就行.
//imports
Image image=createImage();//先创建好
while(true){
g.drawImage(.....);
}
希望以上两点对你有所帮助!
-wbzdwjsm