| | 网站首页 | 无线增值 | 软件下载 | 电信 | 手机 | 手机游戏 | 手机软件 | 手机电子书 | 网中游论坛 | CP.SP论坛 | 网站投稿 | | |
![]() |
![]() |
| 您现在的位置: CP.SP论坛 >> 无线增值 >> 技术文章 >> 游戏教学 >> 文章正文 |
|
|||||
| 从J2ME学Symbian游戏开发(二) | |||||
作者:佚名 文章来源:不详 点击数: 更新时间:2008-2-27 ![]() |
|||||
|
上一节我们讲到了“按键事件”在J2me和Symbian中的类似处理过程,其实这些东西都是一个游戏里必须做的处理,无论是在任何平台。 那么在手机游戏里,菜单也是必不可少的。而在Symbian里是不分什么高级UI和低级UI的,只有系统控件和自定义控件之分。 那么界面交互部分我们一样可以和J2ME做个对比: J2ME里的高级UI+CommandAction() Symbian里的系统控件+HandleCommandL() J2ME里的低级UI+KeyPressed() Symbian里的自定义控件+OfferKeyEventL() (三)系统菜单 和J2ME里不一样的是,Symbian里的系统控件是通过在资源文件中编辑,在源代码之外独立地指定应用程序的可见控件。在资源中可以定义的系统控件包括菜单、对话框、列表等。 应用程序框架在应用程序启动时会打开资源文件,并根据在.rsg中创建的资源标识符,根据需要把各个资源加载到C++代码中。 这样的架构有一定的好处就是:资源文件和C++源文件之间可以共享资源文件中定义的数据。 通常在一个后缀名为.hrh的文件中定义命令菜单中使用的标识符。 如下实例摘自SDK自带的Graphics实例: #ifndef __GRAPHICS_HRH__ #define __GRAPHICS_HRH__ // Graphics enumerate command codes enum TGraphicsIds { EGaphicsNoOffScreenDemo = 1, EGaphicsOffScreenDemo, EGaphicsStopDemo }; #endif // __GRAPHICS_HRH__ 可见资源文件的处理使用的是C的预处理器,以避免多重包含。而.hrh文件也只能包含emnu和预处理语句,其它的C++语法都会导致资源编辑器编辑失败,这点需要特别注意。 下面是和这个.hrh文件相对应的.rss文件的内容: NAME GRAP #include <eikon.rh> #include <avkon.rh> #include <avkon.rsg> #include "Graphics.hrh" // --------------------------------------------------------- // // Define the resource file signature // This resource should be empty. // // --------------------------------------------------------- // RESOURCE RSS_SIGNATURE { } // --------------------------------------------------------- // // Default Document Name // // --------------------------------------------------------- // RESOURCE TBUF { buf=""; } // --------------------------------------------------------- // // Define default menu and CBA key. // // --------------------------------------------------------- // RESOURCE EIK_APP_INFO { menubar = r_graphics_menubar; cba = R_AVKON_SOFTKEYS_OPTIONS_EXIT; } // --------------------------------------------------------- // // r_graphics_menubar // Menubar for Graphics example // // --------------------------------------------------------- // RESOURCE MENU_BAR r_graphics_menubar { titles = { MENU_TITLE { menu_pane = r_graphics_menu; } }; } // --------------------------------------------------------- // // r_graphics_menu // Menu for "Options" // // --------------------------------------------------------- // RESOURCE MENU_PANE r_graphics_menu { items = { MENU_ITEM { command = EGaphicsNoOffScreenDemo; txt = "No off screen bmp"; }, MENU_ITEM { command = EGaphicsOffScreenDemo; txt = "Off screen bmp"; }, MENU_ITEM { command = EGaphicsStopDemo; txt = "Stop Animation"; }, MENU_ITEM { command = EAknSoftkeyExit; txt = "Exit"; } }; } 下面对这个文件的内容做一些说明: RESOURCE RSS_SIGNATURE { } RESOURCE TBUF { buf=""; } 这两个一般情况下是不允许做改动的,前者是资源的签名,后者是默认文档名。 =================================================================================== RESOURCE EIK_APP_INFO { menubar = r_graphics_menubar; cba = R_AVKON_SOFTKEYS_OPTIONS_EXIT; } 用来标识菜单和快捷键的ID,就是给菜单和相应的快捷键起个名字而已,以便于程序后面的使用。 =================================================================================== RESOURCE MENU_PANE r_graphics_menu { items = { MENU_ITEM { command = EGaphicsNoOffScreenDemo; txt = "No off screen bmp"; }, MENU_ITEM { command = EGaphicsOffScreenDemo; txt = "Off screen bmp"; }, MENU_ITEM { command = EGaphicsStopDemo; txt = "Stop Animation"; }, MENU_ITEM { command = EAknSoftkeyExit; txt = "Exit"; } }; } 这个才是实际定义的菜单的真正内容,也就是我们能在界面上看得到的Menu_Item的标识和内容。 =================================================================================== OK了,资源定义已经完成,下面只需要在Ui类的HandleCommandL()方法中针对相应的Command做相应的处理即可。 void CGraphicsAppUi::HandleCommandL(TInt aCommand) { switch(aCommand) { case EEikCmdExit: case EAknSoftkeyExit: Exit(); break; case EGaphicsNoOffScreenDemo: iAppView->StartNoOffScreenDemo(); break; case EGaphicsOffScreenDemo: iAppView->StartOffScreenDemo(); break; case EGaphicsStopDemo: iAppView->StopDemo(); break; default: User:
break; } } 现在你也学了和J2ME里的高级UI响应相对应的Symbian里的处理方法,现在和用户交互应该没问题了。无论是按键事件的OfferKeyEventL()方法、还是菜单命令的HandleCommandL()方法。
|
|||||
| 文章录入:十月 责任编辑:十月 | |||||
| 【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 | |||||
| 最新热点 | 最新推荐 | 相关文章 | ||
| 从J2ME学Symbian游戏开发(二 从J2ME学Symbian游戏开发(一 从J2ME学Symbian游戏开发(一 台湾3G用户突破700万 引入7. J2ME中用MMAPI开发手机摄像头 J2ME:取消中国移动启动上网 J2ME:取消中国移动启动上网 国产3G标准首次测试HSDPA 速 国产3G标准首次测试HSDPA 速 TD手机上网速率将可达1M-2M |
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
| | 设为首页 | 加入收藏 | 联系站长 | 友情链接 | 版权申明 | | |