Android(安卓)Snake
16lz
2021-01-24
Android SDK sample中的一个示例程序。
Snake的代码量很少,只有三个源文件,而且代码很清楚,以下做点学习笔记。
1. 自定义一个继承自View的类,实现View中一些方法(如onDraw),完成游戏界面基本视图。
2. 用一个继承自Handler(不太懂)的类定时发消息,实现游戏界面的动态绘制(蛇在移动)。
3. 保存状态,如玩游戏过程中,按HOME键,再重新进入游戏,恢复先前游戏状态。
4. 剩下的就是程序逻辑了,容易理解。
起初遇到一个不解的问题:
当蛇碰到墙壁结束游戏时,会设定当前模式为“LOSE”状态,但并没有释放mSnakeTrail(存放蛇位置的点集合),为什么就停止蛇的动态绘制了?而墙壁和苹果,依然绘制在画面上。
问题解决:
调试发现,游戏结束后,继承自Handler的类依然在工作,依然定时绘制画面,只不过mSnakeTrail没有画,提前return掉了。
Snake的代码量很少,只有三个源文件,而且代码很清楚,以下做点学习笔记。
1. 自定义一个继承自View的类,实现View中一些方法(如onDraw),完成游戏界面基本视图。
2. 用一个继承自Handler(不太懂)的类定时发消息,实现游戏界面的动态绘制(蛇在移动)。
3. 保存状态,如玩游戏过程中,按HOME键,再重新进入游戏,恢复先前游戏状态。
4. 剩下的就是程序逻辑了,容易理解。
起初遇到一个不解的问题:
当蛇碰到墙壁结束游戏时,会设定当前模式为“LOSE”状态,但并没有释放mSnakeTrail(存放蛇位置的点集合),为什么就停止蛇的动态绘制了?而墙壁和苹果,依然绘制在画面上。
问题解决:
调试发现,游戏结束后,继承自Handler的类依然在工作,依然定时绘制画面,只不过mSnakeTrail没有画,提前return掉了。
更多相关文章
- android 控件颜色随焦点变化实例
- Android中常常使用shape来定义控件的一些显示属性,今天看了一些sh
- Android中的通知—Notification .
- Android(安卓)CheckBox
- Android:蓝牙耳机断开连接,音频播放器暂停播放
- 【Android翻译】关于Activity的onSaveInstanceState调用时机的说
- Android样式:selector(选择器)
- Android基础 - Android(安卓)Studio 添加游戏音效
- Android手机游戏开发知识点总结