首 页 | 新 闻 | Symbian | Android| Windows Mobile | J2ME | 下载中心 | 游戏策划招聘与求职 | 购书指南 | 视频教程
您现在的位置: 开发视界 >> Symbian >> 游戏开发 >> 正文
Symbian编程:俄罗斯方块六步曲 (第五步)
作者:未知    文章来源:www.symfone.com    更新时间:2006-4-28 14:22:54
我们已经基本完成游戏,但是在几个方面还要改进。
第一个是用户打开其它程序或打开菜单,游戏仍在继续,当他回来继续玩的时候,游戏可能已经结束了,为避免这样因此我们应加入暂停的功能。

暂停/停止暂停的功能用户将会在暂停的时候用到,这时将要修改选择的菜单,

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)
{
iState=EPaused;
iPauseTime.HomeTime();
Cancel();
}
}
}
在停止暂停时我们同样要一个计数器来计算剩余的时间。

我们调用TechPause/TechUnPause CS60TestAppView::FocusChanged时是我们打开其他程序或菜单也就是我们的焦点不在此游戏上是,而Pause/UnPause CS60TestAppUi::HandleCommandL在菜单选项里选择的。

当用户从菜单里选择”pause”后,我们应将菜单改成”unpause”转态,这是通过CS60TestAppUi::DynInitMenuPaneL来实现的,每次显示菜单是都会执行它。因此我们在资源文件中设定相对应的字符串。
RESOURCE TBUF16 r_menu_pause_title
{
buf = "Pause";
}

RESOURCE TBUF16 r_menu_unpause_title
{
buf = "Unpause";
}
另外我们还在背景里加了一副图片,
图片在symbian OS中被存为*.mbm文件,是从*.bmp文件在build过程时制作过来的,在mmp文件加入
START BITMAP S60Test.mbm
HEADER
TARGETPATH \system\apps\step5
SOURCEPATH ..\bitmaps
SOURCE c12 tlo.bmp
END
就可以了,一个*.mmp文件可以包含几个*.bmp文件
在本例中s60test.mmp将包含一个bmp文件,图片前面的c12表示是12bit(4096色)来节省空间,你也可以用C16(65536色),build也可以创建另外一个文件s60test.mbg,它将包含所有*.mbm文件的ID,在我们的文件就一个,所以它的ID是EMbmS60testTLO,
iBackground=CEikonEnv::Static()->CreateBitmapL(iPathName, EMbmS60testTlo);
来装载背景图片。

(源码在本站下载)

相关文章:
在S60中、正常UIQ3中使用设备无关字体变斜的解决方案
如何在一个视图上增加菜单
S60 3rd下实现Video Call 与 VoIP Call
symbian学习的开始
Symbian 应用软件开发、测试与S60 平台安全常见问题问答
Symbian开发环境设置(Microsoft Visual Studio.Net 2003工具)已测试通过
S60 3rd版下,如何运行控制台程序?
Symbian OS 应用程序在手机上无法运行的种种原因
 

站点地图 | 加入收藏 | 联系站长 | 广告服务 |
QQ:280529124  Tel:0592-8271361 辽ICP备05021703号