基于Nokia S60的游戏开发之二
http://tech.ddvip.com 2008年06月17日 社区交流
内容摘要:本章将深入研究Series 60和Symbian OS,描述它们作为一个游戏平台的特性。此外,智能电话的需求和限制也将被讨论。
把基于Series 60的智能电话作为一种游戏设备
本章将深入研究Series 60和Symbian OS,描述它们作为一个游戏平台的特性。此外,智能电话的需求和限制也将被讨论。
需求
与许多其它用于游戏的设备不同,智能电话需要在游戏中或者任何其他的应用程序运行的时候能够通知用户各种系统事件。 应用程序需要考虑到可能的中断,例如因为打进来的电话或者消息,并且它们需要根据情况进行处理。 应用程序还应该不消耗设备资源,例如过度的使用内存或者电量。
通知用户的大多数系统消息使用系统自己的对话框,称为全局通知。 这个对话框具有比任何应用程序都要高的窗口优先权,因此它们出现在应用程序的前端。 在系统事件中,一个异常是打进来的电话造成电话通信应用程序变成最前端的应用程序而把被中断的应用程序留作背景。 然而,所有的系统端事件具有一个公共特征,可以被一个应用程序捕捉。 当一个系统事件发生时,最前端的应用程序失去焦点。 这造成应用程序用户接口类(CAknAppUI)的HandleForegroundEventL方法被调用。 通过覆盖这个方法,应用程序可以执行需要的动作,例如暂停正在进行的游戏。
应用程序需要注意电池使用量。 当一个电话在预定的时间内没有使用的情况下,它会进入睡眠方式以便消耗最少的电量。 如果一个应用程序持续做后台处理,例如在一个循环中查询一个变量,电话可能不会进入休眠状态。 所有的查询应该在程序块循环中执行,并且所有的计时器应该在游戏暂停的时候停止。 一旦一个计时器需要来维护和另一个终端的连接,这个计时器的频率应该降到最小水平。 当在预先设定的时间间隔里一直没有用户活动的时候,应用程序还可以从一个系统端计时器中取得事件。 要做到这些可以使用e32std.h头文件中可以找到的RTimer::Inactivity方法。 在电池供电的设备中,软件需要对突然断电有所准备。 电池可能会没电,或者用户可能把它从设备中拿出来。 如果重要的用户数据被编辑的时候,就更应该注意这些情况了。 每隔一段时间这些数据就应该被保存,并且能够在重新启动之后恢复。 此外,应用程序应该对被损坏的数据有所准备,并且能够安全地从这种情况下恢复。
责编:豆豆技术应用