用 JAVA 开发游戏连连看(之六)优化:让程序运行更稳定、更高
2012-09-05 07:58
363 查看
之六)优化:让程序运行更稳定、更高效
改善游戏的合理性
到目前为止,我们的游戏基本上算是完成了,为了使程序更合理,我们还需要将整个程序从头再理一遍,看看有没有改进的地方。
首先,在变量的使用上,由于很多地方会使用相同的数据,因此,将变量定义为 public static 可以减少不必要的重复定义,如颜色、使用的图片等。
其次,由于 JAVA 的特性,我们可以对程序进行简单的修改(如使类从 JApplet 继承而不是从 JFrame 继承等),将其改变为 Applet 程序,让游戏在网页中也可以运行。同时,也考虑到程序的发布,我们可以将最终结果生成 JAR 包。
第三、为了确保在游戏运行时所有需要的资源都已经加载,因此,我们需要使用 MediaTracker 的 addImage(Image image, int id) 和 waitForID(int id) 方法来保证资源加载。
第四、为了避免每次使用资源时都要从硬盘中读取,因此,我们尽可能对所有的资源都要进行缓冲处理,这是以空间换时间的做法。
第五、由于在最后发布程序的时候,我们需要将编译结果打包,因此,对于程序中的图片、声音等也需要放在包中,这样,对文件的访问就不能使用 File 类了,必须使用 java.lang.ClassLoader.findResource(java.lang.String) 来访问包中的资源。
节约内存的使用
虽然 JAVA 提供的垃圾回收机制使我们可以不必考虑内存分配 / 回收的问题,然而,考虑到运行游戏的客户端多样性,因此,我们还是有必要减少内存开销的。还记得在前面我们提到过 AnimateDelete 类中的 public AnimateDelete(JButton[] dots) 构造函数吗?这个看似无用的方法其实是非常有用的。
在前面,我们提及过,由于多个消除动画可以同步进行,因此,如果在每次实例化类的时候都将界面上的 JButton 控件复制进来,这是一笔不小的内存开支,因此,我们在 AnimateDelete 类中将接收到的 JButton 控件定义为 static ,这样,所有的实例都可以共享同一个 JButton 控件,表面上看起来定义 static 变量使得这部分内存的开销无法除,但考虑到 AnimateDelete 类调用的频率,因此,这样反而是节约了内存开支的。
同样,如果大家看看我的源程序,会发现我有一些地方都将变量定义为了 static
改善游戏的合理性
到目前为止,我们的游戏基本上算是完成了,为了使程序更合理,我们还需要将整个程序从头再理一遍,看看有没有改进的地方。
首先,在变量的使用上,由于很多地方会使用相同的数据,因此,将变量定义为 public static 可以减少不必要的重复定义,如颜色、使用的图片等。
其次,由于 JAVA 的特性,我们可以对程序进行简单的修改(如使类从 JApplet 继承而不是从 JFrame 继承等),将其改变为 Applet 程序,让游戏在网页中也可以运行。同时,也考虑到程序的发布,我们可以将最终结果生成 JAR 包。
第三、为了确保在游戏运行时所有需要的资源都已经加载,因此,我们需要使用 MediaTracker 的 addImage(Image image, int id) 和 waitForID(int id) 方法来保证资源加载。
第四、为了避免每次使用资源时都要从硬盘中读取,因此,我们尽可能对所有的资源都要进行缓冲处理,这是以空间换时间的做法。
第五、由于在最后发布程序的时候,我们需要将编译结果打包,因此,对于程序中的图片、声音等也需要放在包中,这样,对文件的访问就不能使用 File 类了,必须使用 java.lang.ClassLoader.findResource(java.lang.String) 来访问包中的资源。
节约内存的使用
虽然 JAVA 提供的垃圾回收机制使我们可以不必考虑内存分配 / 回收的问题,然而,考虑到运行游戏的客户端多样性,因此,我们还是有必要减少内存开销的。还记得在前面我们提到过 AnimateDelete 类中的 public AnimateDelete(JButton[] dots) 构造函数吗?这个看似无用的方法其实是非常有用的。
在前面,我们提及过,由于多个消除动画可以同步进行,因此,如果在每次实例化类的时候都将界面上的 JButton 控件复制进来,这是一笔不小的内存开支,因此,我们在 AnimateDelete 类中将接收到的 JButton 控件定义为 static ,这样,所有的实例都可以共享同一个 JButton 控件,表面上看起来定义 static 变量使得这部分内存的开销无法除,但考虑到 AnimateDelete 类调用的频率,因此,这样反而是节约了内存开支的。
同样,如果大家看看我的源程序,会发现我有一些地方都将变量定义为了 static
相关文章推荐
- 用 JAVA 开发游戏连连看(之六)优化:让程序运行更稳定、更高
- 用 JAVA 开发游戏连连看(之六)优化:让程序运行更稳定、更高
- java游戏开发--连连看-让程序运行更稳定、更高效
- JAVA程序性能优化-让你的java程序更快、更稳定学习笔记一性能优化一般步骤
- 初识java——Java程序的历史、开发和运行
- ubuntu14.04,安装JDK1.8(JAVA程序需要的开发、运行环境)
- 如何优化JAVA程序开发,提高JAVA性能
- 如何优化JAVA程序开发,提高JAVA性能
- ubuntu14.04,安装JDK1.8(JAVA程序需要的开发、运行环境)
- 【Android游戏开发之十】(优化处理)详细剖析Android Traceview效率检视工具,分析程序运行速度!并讲解两种创建SDcard方式!
- DSP程序开发与优化经验之二:程序运行时间测量方法总结
- 【Android游戏开发之十】(优化处理)详细剖析Android Traceview效率检视工具,分析程序运行速度!并讲解两种创建SDcard方式!
- JAVA网站开发与优化如何提高代码运行效率
- java开发第三个JNI示例程序(基于linux操作系统)--Invocation Api实现native层运行java程序
- Delphi开发的后台服务程序也可以7x24小时长时间稳定运行
- DSP程序开发与优化经验之二:程序运行时间测量方法总结
- 如何优化JAVA程序开发,提高JAVA性能?
- Java开发中程序和代码性能优化
- JAVA开发之 10-Editplus开发程序并编译运行
- JAVA小程序开发之模拟电梯APP(代码优化)