读 Beginning Android Games 2nd Edition (十二) 把框架基础功能放入Game类中
来源:互联网 发布:ubuntu deb 编辑:程序博客网 时间:2024/05/17 01:19
AndroidGame类是书中设计的一个综合类,作用如下
Perform window management. In our context, this means setting up an
activity and an AndroidFastRenderView, and handling the activity life cycle in
a clean way.
Use and manage a WakeLock so that the screen does not dim.
Instantiate and hand out references to Graphics, Audio, FileIO, and Input to
interested parties.
Manage Screens and integrate them with the activity life cycle.
对window进行管理,在上下文中对Activity和AndroidFastRenderView进行设置,并以一个干净的方式来处理Activity的生命周期
使用和管理WakeLock,使屏幕不至于休眠
实例化 Graphics, Audio, FileIO, Input 到它们的使用方
管理Screens并把它集成到Activity的生命周期中
下面是AndroidGame要实现的接口,Game
package com.badlogic.androidgames.framework;public interface Game { public Input getInput(); public FileIO getFileIO(); public Graphics getGraphics(); public Audio getAudio(); public void setScreen(Screen screen); public Screen getCurrentScreen(); public Screen getStartScreen();}AndroidGame
package com.badlogic.androidgames.framework.impl;import android.app.Activity;import android.content.Context;import android.content.res.Configuration;import android.graphics.Bitmap;import android.graphics.Bitmap.Config;import android.os.Bundle;import android.os.PowerManager;import android.os.PowerManager.WakeLock;import android.view.Window;import android.view.WindowManager;import com.badlogic.androidgames.framework.Audio;import com.badlogic.androidgames.framework.FileIO;import com.badlogic.androidgames.framework.Game;import com.badlogic.androidgames.framework.Graphics;import com.badlogic.androidgames.framework.Input;import com.badlogic.androidgames.framework.Screen;public abstract class AndroidGame extends Activity implements Game { AndroidFastRenderView renderView; Graphics graphics; Audio audio; Input input; FileIO fileIO; Screen screen; WakeLock wakeLock; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); requestWindowFeature(Window.FEATURE_NO_TITLE); getWindow().setFlags(WindowManager.LayoutParams.FLAG_FULLSCREEN, WindowManager.LayoutParams.FLAG_FULLSCREEN); boolean isLandscape = getResources().getConfiguration().orientation == Configuration.ORIENTATION_LANDSCAPE; int frameBufferWidth = isLandscape ? 480 : 320; int frameBufferHeight = isLandscape ? 320 : 480; Bitmap frameBuffer = Bitmap.createBitmap(frameBufferWidth, frameBufferHeight, Config.RGB_565); float scaleX = (float) frameBufferWidth / getWindowManager().getDefaultDisplay().getWidth(); float scaleY = (float) frameBufferHeight / getWindowManager().getDefaultDisplay().getHeight(); renderView = new AndroidFastRenderView(this, frameBuffer); graphics = new AndroidGraphics(getAssets(), frameBuffer); fileIO = new AndroidFileIO(this); audio = new AndroidAudio(this); input = new AndroidInput(this, renderView, scaleX, scaleY); screen = getStartScreen(); setContentView(renderView); PowerManager powerManager = (PowerManager) getSystemService(Context.POWER_SERVICE); wakeLock = powerManager.newWakeLock(PowerManager.FULL_WAKE_LOCK, "GLGame"); } @Override public void onResume() { super.onResume(); wakeLock.acquire(); screen.resume(); renderView.resume(); } @Override public void onPause() { super.onPause(); wakeLock.release(); renderView.pause(); screen.pause(); if (isFinishing()) screen.dispose(); } public Input getInput() { return input; } public FileIO getFileIO() { return fileIO; } public Graphics getGraphics() { return graphics; } public Audio getAudio() { return audio; } public void setScreen(Screen screen) { if (screen == null) throw new IllegalArgumentException("Screen must not be null"); this.screen.pause(); this.screen.dispose(); screen.resume(); screen.update(0); this.screen = screen; } public Screen getCurrentScreen() { return screen; }}
- 读 Beginning Android Games 2nd Edition (十二) 把框架基础功能放入Game类中
- 读 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 (一) 创建读取文件IO的工具类
- 读 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 (七) 创建Touch事件处理类
- 读 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 (十九) 游戏World类
- 【多媒体封装格式详解】---MP4【1】
- 熊太郎's present
- 详细介绍双网卡内外网同时使用的方法
- 方法的重载
- 本次操作由于计算机的限制而被取消,请与管理员联系
- 读 Beginning Android Games 2nd Edition (十二) 把框架基础功能放入Game类中
- frame和iframe的区别
- 关于敏捷方法的一次沟通记录
- Eclipse 的列编辑模式
- 使用这些提示,帮助你的减肥计划
- 解决MySQL中【Cannot load from mysql.proc. The table is probably corrupted。】的问题
- 构造函数
- 如何迅速缓解皮肤过敏症状
- mysql 删除 主从信息