栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 移动开发 > Android

Android基本游戏循环实例分析

Android 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Android基本游戏循环实例分析

本文实例讲述了Android基本游戏循环。分享给大家供大家参考。具体如下:

// desired fps
private final static int  MAX_FPS = 50;
// maximum number of frames to be skipped
private final static int  MAX_frame_SKIPS = 5;
// the frame period
private final static int  frame_PERIOD = 1000 / MAX_FPS; 
@Override
public void run() {
  Canvas canvas;
  Log.d(TAG, "Starting game loop");
  long beginTime;   // the time when the cycle begun
  long timeDiff;   // the time it took for the cycle to execute
  int sleepTime;   // ms to sleep (<0 if we're behind)
  int framesSkipped; // number of frames being skipped 
  sleepTime = 0;
  while (running) {
    canvas = null;
    // try locking the canvas for exclusive pixel editing
    // in the surface
    try {
      canvas = this.surfaceHolder.lockCanvas();
      synchronized (surfaceHolder) {
 beginTime = System.currentTimeMillis();
 framesSkipped = 0; // resetting the frames skipped
 // update game state
 this.gamePanel.update();
 // render state to the screen
 // draws the canvas on the panel
 this.gamePanel.render(canvas);
 // calculate how long did the cycle take
 timeDiff = System.currentTimeMillis() - beginTime;
 // calculate sleep time
 sleepTime = (int)(frame_PERIOD - timeDiff);
 if (sleepTime > 0) {
   // if sleepTime > 0 we're OK
   try {
     // send the thread to sleep for a short period
     // very useful for battery saving
     Thread.sleep(sleepTime);
   } catch (InterruptedException e) {}
 }
 while (sleepTime < 0 && framesSkipped < MAX_frame_SKIPS) {
   // we need to catch up
   // update without rendering
   this.gamePanel.update();
   // add frame period to check if in next frame
   sleepTime += frame_PERIOD;
   framesSkipped++;
 }
      }
    } finally {
      // in case of an exception the surface is not left in
      // an inconsistent state
      if (canvas != null) {
 surfaceHolder.unlockCanvasAndPost(canvas);
      }
    }  // end finally
  }
}

希望本文所述对大家的Android程序设计有所帮助。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/164172.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号