《Android 3D 游戏案例开发大全》——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号声音的方法。

时间: 2024-11-05 17:17:39

《Android 3D 游戏案例开发大全》——6.7节相关工具类的相关文章

《Android 3D 游戏案例开发大全》——6.2节游戏的策划和准备工作

6.2 游戏的策划和准备工作Android 3D 游戏案例开发大全上一节介绍了本游戏的背景及功能,本节将介绍游戏的策划及开发前的准备工作,这些工作虽然略显枯燥,但是在游戏的开发过程中却起到很大的作用.在正式开发游戏前进行细致地策划能让开发人员在开发前对游戏有总体的把握,理清逻辑关系,使游戏开发过程更加顺利. 6.2.1 游戏的策划本小节将对游戏的策划进行简单介绍,在真实的游戏开发中,该步骤还需更细致.更具体.更全面,该游戏的策划如下所列. 游戏情节本游戏属于休闲益智类游戏,情景设置非常简单,主要

《Android 3D 游戏案例开发大全》——6.4节主控制类——TXZActivity类的开发

6.4 主控制类--TXZActivity类的开发 Android 3D 游戏案例开发大全 Android程序中,Activity是最重要的类之一.在本游戏中,TXZActivity继承自Activity类,为本游戏的主控制类,本节将具体介绍TXZActivity的开发,其具体步骤如下. (1)主控制类代码非常多,首先搭建主控制类的框架,以帮助读者理解,主控制类框架代码如下. 1 package com.bn.txz; //声明包 2 --//此处省略了本类中导入类的代码,读者可以自行查阅随书光

《Android 3D 游戏案例开发大全》——6.6节游戏界面相关类

6.6 游戏界面相关类 Android 3D 游戏案例开发大全 前一小节为读者介绍了辅助界面相关类,本小节将对游戏界面相关类进行介绍,首先介绍游戏界面的各个组成部分,然后介绍游戏整体界面的开发,逐步完成对游戏界面的开发,下面就对这些类的开发进行详细介绍. 6.6.1 顶点数据管理者VertexDataManager 本小节为读者介绍的是整个游戏过程中所有物体顶点数据的管理者VertexDataManager,具体开发步骤如下. (1)首先为读者介绍的是本类主要框架的开发,其代码如下. 1 pac

《Android 3D 游戏案例开发大全》——6.5节辅助界面相关类

6.5 辅助界面相关类 Android 3D 游戏案例开发大全 前一小节介绍了主控制类TXZActivity,本小节将对该游戏的辅助界面相关类进行介绍,该游戏的辅助界面主要是欢迎界面TXZWelcomeView类.菜单界面TXZMenuView类.设置界面TXZSetView类.帮助界面TXZHelpView类.选关界面TXZSelectView类,以及关于界面TXTAboutView类,下面就对这些类的开发进行详细介绍. 6.5.1 欢迎界面类TXZWelcomeView 欢迎界面是进入游戏的

《Android 3D 游戏案例开发大全》——6.1节游戏背景及功能概述

6.1 游戏背景及功能概述Android 3D 游戏案例开发大全本节将对3D游戏开发进行简单介绍,通过本节的学习,读者可以对3D版推箱子游戏有初步的认识,并了解本章开发案例的游戏效果及具体功能. 6.1.1 游戏背景概述推箱子是一款来自日本的古老游戏,目的是训练逻辑思考能力.要求在一个狭小的空间内把木箱放在指定的位置,稍有不小心就会出现箱子无法移动或者通道被堵的情况. 推箱子游戏是一款老少皆宜的益智类游戏,虽然游戏画面与玩法简单,但趣味无穷. 6.1.2 游戏功能简介介绍详细的开发步骤之前,首先

《Android 3D 游戏案例开发大全》——6.3节游戏的架构

6.3 游戏的架构Android 3D 游戏案例开发大全本节主要介绍本游戏的类框架,通过本节的介绍,读者可以进一步了解本游戏的开发过程,为后面要开发的代码部分打下坚实的基础. 6.3.1 各个类简要介绍为了使读者可以更好地了解各个类的作用,本小节将本游戏中用到的所有类分为4部分进行介绍,而每个类的代码将在后面的小节中相继给出. 1.公共类Activity的实现类TXZActivity.TXZActivity是本游戏中的主控制类,此类继承自Activity,是整个游戏的控制类,同时也是整个游戏的入

《Android 3D 游戏案例开发大全》——6.8节游戏的优化与改进

6.8 游戏的优化与改进Android 3D 游戏案例开发大全至此,本游戏的开发介绍完毕,虽然在开发过程中已经对游戏进行了很多的优化,但游戏中还是有一些不足,笔者在这里仅列出了几个方面. 游戏美工的改进在游戏开发时,笔者已经对美工做了一些工作,让整体界面比较美观,但还是可以改进的,通过对游戏中的图案美化和布局,让游戏更具吸引力. 游戏玩法的改进本游戏玩家可以选择想玩的关卡,但是由于本游戏的关卡并没有那么多.那么难,因此,读者可以根据自己的理解开发出不同挑战难度的游戏. 游戏的进一步优化.虽然笔者

《Android 3D 游戏案例开发大全》——导读

目 录 第1章 千里之行始于足下--Android 平台简介及开发环境的使用第2章 棋牌类3D游戏--国际象棋人机对弈第3章 物理引擎3D游戏 --疯狂的石头第4章 蓝牙对战游戏第5章 竞速类游戏--快乐小球第6章 益智类游戏--3D推箱子 6.1 游戏背景及功能概述6.2 游戏的策划和准备工作 6.3 游戏的架构 6.4 主控制类--TXZActivity类的开发6.5 辅助界面相关类 6.6 游戏界面相关类 6.7 相关工具类 6.8 游戏的优化与改进 第7章 物理引擎类游戏--3D抽方块第

《Unity 游戏案例开发大全》一6.2 游戏的策划及准备工作

6.2 游戏的策划及准备工作 Unity 游戏案例开发大全前一节简单介绍了游戏的背景和功能,本节主要介绍本游戏的策划及正式开发前的一些准备工作.游戏开发需要做的准备工作大体上包括游戏策划.美工需求.音乐等.游戏开发前的充分准备可以保证开发人员有一个顺畅的开发流程,保证开发顺利进行. 6.2.1 游戏的策划 本小节将对游戏的策划进行简单的介绍,通过本小节的介绍,读者将对本游戏的基本开发流程和方法有一个基本的了解.在实际的游戏开发过程中还需更细致.更具体.更全面的策划,该游戏的策划如下所列. 游戏类