日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪(fǎng)問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

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

發(fā)布時(shí)間:2024/8/26 编程问答 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 J2ME手机游戏引擎程序结构简述 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

游戲引擎的結(jié)構(gòu)很多,不過(guò)基本上都是在一個(gè)游戲主循環(huán)內(nèi)實(shí)現(xiàn)。程序里面的主循環(huán)包含了程序框架的最主要的結(jié)構(gòu)體。J2me的程序一般都包含兩個(gè)class文件,一個(gè)是MIDlet,一個(gè)是Displayable。一般我都是把游戲的主要代碼放在Displayable這個(gè)類(lèi)里面。這個(gè)類(lèi)是基于事件驅(qū)動(dòng)的程序,有三個(gè)主要相應(yīng)函數(shù)
void paint(Graphics g),void keyPressed(int keyCode),void keyReleased(int keyCode)。

  1.使用Runnable和創(chuàng)建線(xiàn)程的主循環(huán)

  一般主體的做法就是讓Displayable這個(gè)類(lèi)實(shí)現(xiàn)Runnable這個(gè)接口,然后在其構(gòu)造函數(shù)中創(chuàng)建一個(gè)線(xiàn)程,啟動(dòng)其run()函數(shù),而run函數(shù)里面就包含了游戲的主循環(huán)。下面是我在仙劍里面的片斷代碼。

public class GameMIDlet extends MIDlet {
static GameMIDlet instance;
Display display;
GameDisplayable displayable = null;
public GameMIDlet() {
instance = this;
display = Display.getDisplay(this);
displayable = new GameDisplayable();
}

public void startApp() {
display.setCurrent(displayable);
}

public void pauseApp() {
}

public void destroyApp(boolean unconditional) {
displayable.running = false;
}

public static void quitApp() {
instance.destroyApp(true);
instance.notifyDestroyed();
instance = null;
}
}

public class GameDisplayable extends FullCanvas implements Runnable {
/** 主控制線(xiàn)程 */
Thread MainThread = null;
/** 游戲時(shí)鐘間隔 毫秒為單位 */
public static long timeinterval = 20;
public static boolean Isstable = true;
/* 用于游戲時(shí)鐘的變量 */
public static long timeold = 0;
public static long timenow = 0;
public long interval = 0;
public static long frames_per_second = 0;
int count = 0;
long second = 0;
public static boolean running = true;
 public GameDisplayable() {
// 開(kāi)始主線(xiàn)程
Thread MainThread = new Thread(this);
MainThread.start();
}
public void run() {
while (running) {
timenow = System.currentTimeMillis();
interval = timenow - timeold;
if (interval >= timeinterval) {
timeold = timenow;
Game_Process();
if (second != (System.currentTimeMillis() / 1000)) {
second = System.currentTimeMillis() / 1000;
frames_per_second = count;
count = 1;
}
else
count++;
}
lib.sleep(30);
}
}

  其中關(guān)于控制主循環(huán)速度的代碼可以不要,但是lib.sleep(30)必須保留,因?yàn)樵贜okia 60的手機(jī)上,如果去除了sleep(30),那么游戲?qū)o(wú)法切換回來(lái)。同時(shí),在游戲中任何一個(gè)內(nèi)部循環(huán)中,也必須加入sleep(30)這個(gè)等待,才能讓游戲可以切換回來(lái),至于為什么這樣做,我暫時(shí)還不清楚。30ms是我測(cè)試過(guò)沒(méi)有問(wèn)題的數(shù)值,可能比30ms還小的值也是沒(méi)有問(wèn)題的。

  同時(shí),在MOTO的手機(jī)上,必須將游戲的主循環(huán)放在一個(gè)直播號(hào)線(xiàn)程中,游戲才能切換回來(lái),不過(guò)可以不加上面說(shuō)的sleep(30)延時(shí)。

  2.不使用線(xiàn)程的主循環(huán)辦法

  手游賬號(hào)出售只能在Nokia的平臺(tái)上實(shí)現(xiàn),而我只建議在Nokia 40的平臺(tái)上做,這樣不需要線(xiàn)程,道理上來(lái)說(shuō)節(jié)約了一些內(nèi)存,如果不是內(nèi)存很緊張的機(jī)型,那么最好還是使用上一種辦法。

  游戲的主循環(huán)放在MIDlet的class里面,具體做法如下:

public class GameMIDlet extends MIDlet {
GameDisplayable displayable = null;
/** 游戲時(shí)鐘間隔 毫秒為單位 */
public static long timeinterval = 0;
//用于游戲時(shí)鐘的變量
public static long timeold = 0;
public static long timenow = 0;
public long interval = 0;
public static long frames_per_second=0;
int count=0;
long second =0;
public static boolean running = false;
static boolean exitApp =false;
public GameMIDlet() {
displayable = new GameDisplayable();
running =true;
}

public void startApp() {
running =true;
Display.getDisplay(this).setCurrent(displayable);
while(running) {
timenow = System.currentTimeMillis();
interval = timenow - timeold;
if (interval >= timeinterval) {
timeold = timenow;
displayable.Game_Process();
if(second != (System.currentTimeMillis() /1000)){
second = System.currentTimeMillis()/1000;
frames_per_second = count;
count = 1;
}else
count ++;
}
}
if(exitApp) {
destroyApp(true);
notifyDestroyed();
}
}

public void pauseApp() {
running =false;
}

public void destroyApp(boolean unconditional) {
running = false;
}

public static void quitApp() {
running =false;
exitApp =true;
}

}

總結(jié)

以上是生活随笔為你收集整理的J2ME手机游戏引擎程序结构简述的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 超碰人人草人人干 | 男女又爽又黄 | 麻豆www.| 粉嫩av国产一区二区三区 | 又污又黄又爽的网站 | 欧美亚洲一区二区三区 | 99国产精品久久久久 | 天天综合网天天综合色 | 777奇米色| 国产图片一区 | 国产精品免费一区二区三区 | 亚洲精品久久久久久动漫器材一区 | 性色av一区二区三区在线观看 | 久久久久97 | 毛片毛片毛片毛片毛片毛片 | 日韩一级影视 | 亚洲视频在线免费看 | 超碰95在线 | 黄大色黄大片女爽一次 | www.youjizz.com日本| 一级片99 | 99自拍| 四虎成人精品永久免费av九九 | 爱爱综合网 | 朱竹清到爽高潮痉挛 | 国产成人超碰人人澡人人澡 | 日韩精品一区二区三区 | 潘金莲一级淫片aaaaaa播放 | 他揉捏她两乳不停呻吟动态图 | 亚洲一区免费在线观看 | 精品久久亚洲 | 亚洲一区二区三区四区在线播放 | 免费毛片小视频 | 久久青娱乐 | 国产对白在线 | 亚洲电影影音先锋 | 午夜在线观看视频 | 国产一区二区波多野结衣 | 中文字幕日韩一级 | 国产草草| 伊人网在线观看 | 亚洲欧美自拍视频 | 日本高清www免费视频 | 精品一区二区中文字幕 | 女同爱爱视频 | 久插视频 | 免费成人黄色网址 | 帮我拍拍漫画全集免费观看 | 伊人伊人鲁 | 肉色丝袜脚交一区二区 | 国产午夜精品久久 | 精品熟妇无码av免费久久 | 国产无遮挡又黄又爽又色 | 亚洲成人a√ | 中文字幕精品在线视频 | 五月天中文字幕av | 成人午夜剧场视频网站 | 久久黄色小视频 | 亚洲AV无码久久精品色三人行 | 奇米影音 | 人人射视频 | 国产黄色片在线 | 日本少妇做爰全过程毛片 | 韩国19主播内部福利vip | 黄色免费91 | 午夜一本 | 一区二区的视频 | 国产精品成人电影在线观看 | 国产精品丝袜一区二区 | 日韩欧美中文字幕一区二区三区 | 亚洲欧洲在线观看 | 免费看黄色漫画 | 欧洲午夜精品 | 激情偷乱人成视频在线观看 | 日本不卡在线视频 | 久久精品黄色片 | 九九小视频 | 一起操17c | 尤物国产| 漂亮人妻洗澡被公强 日日躁 | 瑟瑟视频在线免费观看 | 一区成人 | 水蜜桃av无码 | 成人亚洲天堂 | 91一区二区三区在线 | 国产又黄又爽视频 | 婷婷伊人久久 | 韩国毛片一区二区三区 | 另类小说亚洲色图 | 精品亚洲一区二区三区四区五区高 | 欧美日韩不卡合集视频 | av资源部 | 精品一区二区三区在线免费观看 | 国产精品500部 | 亚洲第1页 | 99在线视频播放 | 操天天操| 一级片www | 人妻 丝袜美腿 中文字幕 |