当前位置:七道奇文章资讯编程技术Java编程
日期:2011-03-22 16:12:00  来源:本站整理

J2ME手机游戏引擎程序构造简述[Java编程]

赞助商链接



  本文“J2ME手机游戏引擎程序构造简述[Java编程]”是由七道奇为您精心收集,来源于网络转载,文章版权归文章作者所有,本站不对其观点以及内容做任何评价,请读者自行判断,以下是其具体内容:

游戏引擎的构造很多,不过基本上都是在一个游戏主循环内实现.程序里面的主循环包含了程序框架的最主要的构造体.J2ME的程序普通都包含两个class文件,一个是MIDlet,一个是Displayable.普通我都是把游戏的主要代码放在Displayable这个类里面.这个类是基于事件驱动的程序,有三个主要呼应函数void paint(Graphics g),void keyPressed(int keyCode),void keyReleased(int keyCode).

1、利用Runnable和成立线程的主循环

普通主体的做法就是让Displayable这个类实现Runnable这个接口,然后在其构造函数中成立一个线程,启动其run()函数,而run函数里面就包含了游戏的主循环.下面是我在仙剑里面的片断代码.

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 {
/** 主掌握线程 */
Thread MainThread = null;
/** 游戏时钟隔断 毫秒为单位 */
public static long timeinterval = 20;
public static boolean Isstable = true;
/* 用于游戏时钟的变量 */
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() {
// 开始主线程
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);
}
}

此中关于掌握主循环速度的代码可以不要,但是lib.sleep(30)必须保存,因为在Nokia 60的手机上,假如去除了sleep(30),那么游戏将无法切换回来.同时,在游戏中任何一个内部循环中,也必须加入sleep(30)这个等候,才能让游戏可以切换回来,至于为什么这样做,我暂时还不清楚.30ms是我测试过没有问题的数值,大概比30ms还小的值也是没有问题的.

同时,在MOTO的手机上,必须将游戏的主循环放在一个线程中,游戏才能切换回来,不过可以不加上面说的sleep(30)延时.


  以上是“J2ME手机游戏引擎程序构造简述[Java编程]”的内容,如果你对以上该文章内容感兴趣,你可以看看七道奇为您推荐以下文章:

  • j2me创意-Wap浏览器的源代码
  • J2ME中读取Unicode和UTF-8编码文件
  • J2ME中的底子碰撞检测算法浅析
  • <b>关于j2me game双缓冲实现根究</b>
  • J2ME游戏开辟学习之用setClip分割图片
  • 在J2ME/MIDP中实现图象旋转
  • 初学j2me必读 网友学习笔记
  • 操纵J2ME程序测试MIDlet的生命周期
  • J2ME中操纵缓存将屏幕内容存储为Image
  • 操纵J2ME技术开辟RPG游戏之按键处理机制
  • J2ME中setClip办法操纵详解
  • 在J2ME手机程序开辟中操纵颜色
  • 本文地址: 与您的QQ/BBS好友分享!
    • 好的评价 如果您觉得此文章好,就请您
        0%(0)
    • 差的评价 如果您觉得此文章差,就请您
        0%(0)

    文章评论评论内容只代表网友观点,与本站立场无关!

       评论摘要(共 0 条,得分 0 分,平均 0 分) 查看完整评论
    Copyright © 2020-2022 www.xiamiku.com. All Rights Reserved .