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

// desired fpsprivate final static int  MAX_FPS = 50;// maximum number of frames to be skippedprivate final static int  MAX_FRAME_SKIPS = 5;// the frame periodprivate final static int  FRAME_PERIOD = 1000 / MAX_FPS; @Overridepublic 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程序设计有所帮助。

更多相关文章

  1. 20172323 2017-2018-2《程序设计与数据结构》第十一周学习总结
  2. 以一个小程序设计来入门Android
  3. Android修行之路——Android程序设计基础(一)
  4. Android TestView文本文字修改实例
  5. 分享第一本中文Android书籍(应用框架和程序设计--高焕堂)
  6. Android 系统中 gps Location Service 的实现与架构,本文可以帮助
  7. 20172324 2017-2018《程序设计与数据结构》第十一周学习总结
  8. 第三章 Android程序设计基础
  9. 20155323 第四次实验 Android程序设计实验报告

随机推荐

  1. Android(安卓)-SQLite数据库存储
  2. [android] 隐式意图的配置
  3. Android封装jar包,把当前项目设置成module
  4. Android中的Selector
  5. Android(安卓)学习系列 - Itent
  6. android studio线性布局,相对布局,TestView
  7. Android(安卓)application context/activ
  8. Ubuntu下android源码下载与编译
  9. Android(安卓)自动编译、打包生成apk文件
  10. 基于 Android(安卓)NDK 的学习之旅-----