j2me手机游戏引擎程序结构简述

j2me手机游戏引擎程序结构简述

ID:8969405

大小:33.50 KB

页数:4页

时间:2018-04-13

j2me手机游戏引擎程序结构简述_第1页
j2me手机游戏引擎程序结构简述_第2页
j2me手机游戏引擎程序结构简述_第3页
j2me手机游戏引擎程序结构简述_第4页
资源描述:

《j2me手机游戏引擎程序结构简述》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库

1、J2ME手机游戏引擎程序结构简述游戏引擎的结构很多,不过基本上都是在一个游戏主循环内实现。程序里面的主循环包含了程序框架的最主要的结构体。J2me的程序一般都包含两个class文件,一个是MIDlet,一个是Displayable。一般我都是把游戏的主要代码放在Displayable这个类里面。这个类是基于事件驱动的程序,有三个主要相应函数voidpaint(Graphicsg),voidkeyPressed(intkeyCode),voidkeyReleased(intkeyCode)。  1.使用Runnable和创建线程

2、的主循环  一般主体的做法就是让Displayable这个类实现Runnable这个接口,然后在其构造函数中创建一个线程,启动其run()函数,而run函数里面就包含了游戏的主循环。下面是我在仙剑里面的片断代码。Code:publicclassGameMIDletextendsMIDlet{staticGameMIDletinstance;Displaydisplay;GameDisplayabledisplayable=null;publicGameMIDlet(){instance=this;display=Display

3、.getDisplay(this);displayable=newGameDisplayable();}publicvoidstartApp(){display.setCurrent(displayable);}publicvoidpauseApp(){}publicvoiddestroyApp(booleanunconditional){displayable.running=false;}publicstaticvoidquitApp(){instance.destroyApp(true);instance.notifyD

4、estroyed();instance=null;}}publicclassGameDisplayableextendsFullCanvasimplementsRunnable{/**主控制线程*/ThreadMainThread=null;/**游戏时钟间隔毫秒为单位*/publicstaticlongtimeinterval=20;publicstaticbooleanIsstable=true;/*用于游戏时钟的变量*/publicstaticlongtimeold=0;publicstaticlongtimenow=0

5、;publiclonginterval=0;publicstaticlongframes_per_second=0;intcount=0;longsecond=0;publicstaticbooleanrunning=true; publicGameDisplayable(){//开始主线程ThreadMainThread=newThread(this);MainThread.start();}publicvoidrun(){while(running){timenow=System.currentTimeMillis();i

6、nterval=timenow-timeold;if(interval>=timeinterval){timeold=timenow;Game_Process();if(second!=(System.currentTimeMillis()/1000)){second=System.currentTimeMillis()/1000;frames_per_second=count;count=1;}elsecount++;}lib.sleep(30);}}其中关于控制主循环速度的代码可以不要,但是lib.sleep(30)必须保

7、留,因为在Nokia60的手机上,如果去除了sleep(30),那么游戏将无法切换回来。同时,在游戏中任何一个内部循环中,也必须加入sleep(30)这个等待,才能让游戏可以切换回来,至于为什么这样做,我暂时还不清楚。30ms是我测试过没有问题的数值,可能比30ms还小的值也是没有问题的。  同时,在MOTO的手机上,必须将游戏的主循环放在一个线程中,游戏才能切换回来,不过可以不加上面说的sleep(30)延时。2.不使用线程的主循环办法  这个办法只能在Nokia的平台上实现,而我只建议在Nokia40的平台上做,这样不需要

8、线程,道理上来说节约了一些内存,如果不是内存很紧张的机型,那么最好还是使用上一种办法。  游戏的主循环放在MIDlet的class里面,具体做法如下:publicclassGameMIDletextendsMIDlet{GameDisplayabledisplayable=n

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。