《Android 3D 游戏案例开发大全》——6.7节相关工具类
本节书摘来自异步社区《Android 3D 游戏案例开发大全》一书中的第6章,第6.7节相关工具类,作者 吴亚峰 , 于复兴 , 杜化美,更多章节内容可以访问云栖社区“异步社区”公众号查看
6.7 相关工具类
Android 3D 游戏案例开发大全
为了实现程序中的功能,需要很多工具辅助方法,在开发时将相关的方法组织到一起就构成了一个个的工具类。工具类自己并不能实现什么具体的效果,但它是程序后台的支撑。
6.7.1 箱子排序类CompareDis
本小节为读者介绍的是箱子排序类,该类通过比较箱子与摄像机之间距离来确定箱子的绘制顺序,其代码如下。
1 package com.bn.txz.manager; //声明包 2 public class CompareDis implements Comparable<CompareDis>{ 3 public float dis; 4 public int row; 5 public int col; 6 public CompareDis(float dis,int row,int col){ //创建CompareDis方法构造器 7 this.dis=dis; 8 this.row=row; 9 this.col=col; 10 } 11 @Override 12 public int compareTo(CompareDis another) { //需要从大到小排列,所以返回值相反 13 if(dis<another.dis) //-1表示小于 14 return 1; 15 if(dis>another.dis) //1表示大于 16 return -1; 17 return 0; 18 }}
第3-5行是声明该类中的成员变量。第6-10行是该类的构造器,其在其他类创建该类对象时被调用。第11-18行是重写ComparaTo方法,其实现的功能是根据比较的大小返回代表大于、小于或等于的代表数据。
6.7.2 记录关卡工具类SharedPreferencesUtil
上一小节为读者介绍了箱子排序类CompareDis,本小节为读者介绍的是记录关卡工具类,其代码如下。
1 package com.bn.txz.manager; //声明包 2 ……//此处省略了本类中导入类的代码,读者可以自行查阅随书光盘中的源代码 3 public class SharedPreferencesUtil { 4 private SharedPreferences sp; //声明成员变量 5 public SharedPreferencesUtil(TXZActivity activity) { //构造器 6 sp=activity.getSharedPreferences("playerPrefers", Context.MODE_PRIVATE); 7 } 8 public int getPassNum() { //获取通过关卡方法 9 return sp.getInt("passNum", 1); 10 } 11 public void putPassNum(int value){ //存储通过关卡方法 12 Editor editor=sp.edit(); //创建对象 13 editor.putInt("passNum", value); 14 editor.commit(); //提交数据 15 }}
第4行是声明该类中的成员变量。第5-7行是该类的构造方法。第8-10行是获取通过关卡方法。第11-15行是存储通过关卡方法。
6.7.3 声音加载类SoundUtil
本小节为读者介绍的是声音加载工具类,本类提供了将声音加载进内存的初始化声音的方法initSounds和播放声音的方法playSounds,其代码如下。
1 package com.bn.txz.manager; //声明包 2 ……//此处省略了本类中导入类的代码,读者可以自行查阅随书光盘中的源代码 3 public class SoundUtil { 4 public static final int XUANZHONG=1; //音效编号 5 public static SoundPool soundPool; //声音缓冲池 6 public static HashMap<Integer, Integer> soundPoolMap; //存放声音id的Map 7 public static void initSounds(Context context) { //声音缓冲池的初始化 8 soundPool = new SoundPool ( //创建声音缓冲池 9 2, //同时能最多播放的个数 10 AudioManager.STREAM_MUSIC, //音频的类型 11 100 //声音的播放质量,目前无效 12 ); 13 soundPoolMap = new HashMap<Integer, Integer>(); //创建声音资源Map 14 //将加载的声音资源id放进此Map 15 soundPoolMap.put(XUANZHONG, soundPool.load(context, R.raw.zhuangsui, 1)); 16 } 17 public static void playSounds(int key, int loop,Context context){ //播放声音的方法 18 AudioManager mgr = (AudioManager) context.getSystemService(Context.AUDIO_ SERVICE); 19 float streamVolumeCurrent = mgr. //当前音量 20 getStreamVolume(AudioManager.STREAM_MUSIC); 21 float streamVolumeMax = mgr. //最大音量 22 getStreamMaxVolume(AudioManager.STREAM_MUSIC); 23 float volume = streamVolumeCurrent / streamVolumeMax; 24 soundPool.play( 25 soundPoolMap.get(key), //声音id 26 volume, //左声道 27 volume, //右声道 28 1, //优先级 29 loop, //是否循环 30 0.5f //rate 31 ); 32 }}
第4-6行分别声明了音效编号、声音缓冲池和存放声音id的Map。第7-16行为声音缓冲池的初始化方法,在该方法中创建了声音缓冲池和声音资源Map,同时将加载的声音资源存到Map。第17-32行是播放指定id号声音的方法。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
《Android 3D 游戏案例开发大全》——6.8节游戏的优化与改进
本节书摘来自异步社区《Android 3D 游戏案例开发大全》一书中的第6章,第6.8节游戏的优化与改进,作者 吴亚峰 , 于复兴 , 杜化美,更多章节内容可以访问云栖社区“异步社区”公众号查看 6.8 游戏的优化与改进Android 3D 游戏案例开发大全至此,本游戏的开发介绍完毕,虽然在开发过程中已经对游戏进行了很多的优化,但游戏中还是有一些不足,笔者在这里仅列出了几个方面。 游戏美工的改进在游戏开发时,笔者已经对美工做了一些工作,让整体界面比较美观,但还是可以改进的,通过对游戏中的图案美化和布局,让游戏更具吸引力。 游戏玩法的改进本游戏玩家可以选择想玩的关卡,但是由于本游戏的关卡并没有那么多、那么难,因此,读者可以根据自己的理解开发出不同挑战难度的游戏。 游戏的进一步优化。虽然笔者已经对本游戏做了优化,但是在一些机型上运行速度还是比较慢,因此,读者可以对该游戏做进一步的优化,使游戏速度进一步提升。
- 下一篇
《iOS 6高级开发手册(第4版)》——1.15节还有一件事:检查可用的磁盘空间
本节书摘来自异步社区《iOS 6高级开发手册(第4版)》一书中的第1章,第1.15节还有一件事:检查可用的磁盘空间,作者 【美】Erica Sadun,更多章节内容可以访问云栖社区“异步社区”公众号查看 1.15 还有一件事:检查可用的磁盘空间iOS 6高级开发手册(第4版)NSFileManager类可让你确定iPhone上有多少空闲空间,以及设备上总共提供了多少空间。程序清单1-1演示了如何检查这些值,并且使用友好的、逗号格式化的字符串显示结果。返回的值表示空闲空间(以字节为单位)。 程序清单1-1 获取文件系统大小和文件系统空闲大小 - (NSString *) commaFormattedStringWithLongLong: (long long) num { // Produce a properly formatted number string // Alternatively use NSNumberFormatter if (num < 1000) return [NSString stringWithFormat:@"%d", num]; return [[...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- Docker使用Oracle官方镜像安装(12C,18C,19C)
- SpringBoot2配置默认Tomcat设置,开启更多高级功能
- Red5直播服务器,属于Java语言的直播服务器
- CentOS7设置SWAP分区,小内存服务器的救世主
- CentOS7安装Docker,走上虚拟化容器引擎之路
- SpringBoot2编写第一个Controller,响应你的http请求并返回结果
- CentOS关闭SELinux安全模块
- CentOS7,CentOS8安装Elasticsearch6.8.6
- Jdk安装(Linux,MacOS,Windows),包含三大操作系统的最全安装
- Linux系统CentOS6、CentOS7手动修改IP地址