读 Beginning Android Games 2nd Edition (十一) 加入游戏暂停/恢复功能
2012-12-27 16:40
369 查看
这个类扩展了SurfaceView的功能,利用线程挂起的方式来暂停游戏,至于AndroidGame这个类,书中后面有提到
package com.badlogic.androidgames.framework.impl; import android.graphics.Bitmap; import android.graphics.Canvas; import android.graphics.Rect; import android.view.SurfaceHolder; import android.view.SurfaceView; public class AndroidFastRenderView extends SurfaceView implements Runnable { AndroidGame game; Bitmap framebuffer; Thread renderThread = null; SurfaceHolder holder; volatile boolean running = false; public AndroidFastRenderView(AndroidGame game, Bitmap framebuffer) { super(game); this.game = game; this.framebuffer = framebuffer; this.holder = getHolder(); } public void resume() { running = true; renderThread = new Thread(this); renderThread.start(); } public void run() { Rect dstRect = new Rect(); long startTime = System.nanoTime(); while(running) { if(!holder.getSurface().isValid()) continue; float deltaTime = (System.nanoTime()-startTime) / 1000000000.0f; startTime = System.nanoTime(); game.getCurrentScreen().update(deltaTime); game.getCurrentScreen().present(deltaTime); Canvas canvas = holder.lockCanvas(); canvas.getClipBounds(dstRect); canvas.drawBitmap(framebuffer, null, dstRect, null); holder.unlockCanvasAndPost(canvas); } } public void pause() { running = false; while(true) { try { renderThread.join(); return; } catch (InterruptedException e) { // retry } } } }
相关文章推荐
- 读Beginning Android Games 2nd Edition中的贪吃蛇游戏
- 读 Beginning Android Games 2nd Edition (十九) 游戏World类
- 读 Beginning Android Games 2nd Edition (十六) 游戏帮助
- 读 Beginning Android Games 2nd Edition (二十) 游戏GameScreen类
- 读 Beginning Android Games 2nd Edition (十五) 游戏主菜单
- 读 Beginning Android Games 2nd Edition (十三) "Nom先生"游戏设计
- 读 Beginning Android Games 2nd Edition (十二) 把框架基础功能放入Game类中
- 读 Beginning Android Games 2nd Edition (十八) 贪食蛇类
- 读 Beginning Android Games 2nd Edition (二十二) 封装OpenGL之GLGame类
- 读 Beginning Android Games 2nd Edition (六) 创建键盘事件处理类
- 读 Beginning Android Games 2nd Edition (十七) 分数榜类
- 读 Beginning Android Games 2nd Edition (八) 创建输入事件处理类
- 读 Beginning Android Games 2nd Edition (九) 创建像素图类
- 读 Beginning Android Games 2nd Edition (十) 创建绘图类
- 读 Beginning Android Games 2nd Edition (二十一) 封装OpenGL之GLGraphics类
- 读 Beginning Android Games 2nd Edition (一) 创建读取文件IO的工具类
- 读 Beginning Android Games 2nd Edition (七) 创建Touch事件处理类
- 读 Beginning Android Games 2nd Edition (二) 创建声音工具类
- 读 Beginning Android Games 2nd Edition (五) 创建对象池类
- 读 Beginning Android Games 2nd Edition (十四) 玩家设置存储类