开发 Symbian 系统上的俄罗斯方块实例
2010-02-22 23:39:00 来源:WEB开发网RESOURCE TBUF32 r_note_game_over
{
buf = "Game Over";
}
Build 将其建成s60test..rsg文件,在这个文件中R_NOTE_GAME_OVER定义成ID,通过
CEikonEnv::Static()->ReadResource(message, R_NOTE_GAME_OVER)
来加载"game over"
第五步
我们已经基本完成游戏,但是在几个方面还要改进。
第一个是用户打开其它程序或打开菜单,游戏仍在继续,当他回来继续玩的时候,游戏可能已经结束了,为避免这样因此我们应加入暂停的功能。
暂停/停止暂停的功能用户将会在暂停的时候用到,这时将要修改选择的菜单,TechPause/TechUnPause将会被用户切换到其他程序或菜单(不改变菜单选项)时调用,
void TechPause() { iTechPauseRef++; DoPause(); }
void TechUnpause() { iTechPauseRef--; DoPause(); }
这两个都参考了计数器,调用两次TechPause,将调用两次TechUnPause来停止暂停游戏,这是以前老版本游戏的用法,本游戏不是这样的
void CS60TestAppView::FocusChanged(TDrawNow aDrawNow)
{
if (IsFocused())
{
if (!iFocus)
{
iFocus=true;
iEngine->TechUnpause();
}
} else
{
if (iFocus)
{
iFocus=false;
iEngine->TechPause();
}
}
}
如果在DoPause里进行暂停和停止暂停,在暂停是我们要计算暂停多长时间,并结束计数器,
void CS60TestEngine::DoPause()
{
__ASSERT_ALWAYS(iPauseRef>=0 && iTechPauseRef>=0, Panic(ES60TestAssert));
if (iPauseRef==0 && iTechPauseRef==0)
{
if (iState==EPaused)
{
int ms=iPauseTime.MicroSecondsFrom(iBeginTime).Int64().GetTInt();
if (ms<0 || ms>iInterval)
ms=0;
iState=ERunning;
After(iInterval-ms);
}
} else
{
if (iState==ERunning)
{
- ››开发Android 日历教程
- ››开发学院总结 Win 8实用技巧大全
- ››开发学院原创教程:把win8的IE10放桌面上方法(非...
- ››开发者眼中的Windows Phone和Android
- ››Symbian S60 SocketConnection参数
- ››开发学院教你用SQL 语句最快速清空MySQL 数据表的...
- ››Symbian乏力:2010年诺基亚悲情大事记
- ››Symbian三大升级开启2011年新战略
- ››Symbian/Android/iOS/WM安装包对比
- ››Symbian一个活动对象的测试例子
- ››Symbian ListBox控件
- ››Symbian下自动切换SDK的批处理代码
更多精彩
赞助商链接