相信在手机游戏开发这块是J2ME的天下,一是因为它简单容易学,二是因为关于它的资料多。
而J2ME毕竟是运行在Symbian OS的内核之上的,速度慢也是必然的了,更不能忍受的是它把很多与底层的交互封装了起来,并且不提供接口让你访问。
这对于我这样喜欢刨根问低的人来说,是实在无法忍受的!
其实真正了解了Symbian OS和相应的Series 60,如果在这个平台上做游戏开发的话,Series 60并不比J2ME高深多少。因为它提供了一个AppArc,同样把一些底层的东西封装了起来,但是至少我们可以有接口可用来访问低层的东西。
下面我就把最近一段时间的学习总结一下:
(一)关于开发工具
原本是没有必要写这个的,不过看到网上五花八门的工具配置、工具安装的文章,实在觉得有必要出来澄清一下。
其实,完全没必要为选择什么IDE来烦恼,无论是Moblie Borland C++、VC、VC.NET、CodeWarrior还是Nokia最近力推的Carbide.C++,他们都存在着这样那样的问题。没有一个是完美的开发工具,而且series的SDK还为每一种开发工具提供了不同的版本,真是感觉有点"光了屁股系裤腰带-----多那么一道子"。IDE只能用来看源代码或者写代码,真正有用的还是SDK下的command命令行,不要怕麻烦,这些往往是最重要的。
命令也就是常用的那么几个:
bldmake bldfiles
abld build wins udeb
epoc
makesis
devices
(二)关于键盘交互
无论做什么样的游戏,都少不了与用户的交互,而对于手机设备来说。与用户交互的无非是键盘,按键事件是系统事件的一种,一旦设备键盘上的键被按下、按住或释放的时候即会产生按键事件。
Symbian的Window服务器通过控件栈把按键事件传递到应用程序。然后通过调用控件的OfferKeyEventL()方法把按键事件通知相应的控件。这和我们在J2ME里通过KeyPressed(int keyCode)把相应的按键事件通知相应的Canvas类一样。
OK,我们现在有了第一个类比的关系:
Symbian的OfferKeyEventL() J2ME的KeyPressed(int keyCode)
当然,Symbian里这个方法还有一些需要特别说明的不同之处。
Symbian里的控件栈是一个结构,负责维护控件。当有按键事件发生的时候,这个按键事件会从控件栈的顶部依次传递到最底端,直至得到了某个控件的处理。默认情况下,控件是不在栈中的,所以应该使用相应的函数CAknAppUi::AddToStackL()把控件添加到控件栈中,使它能够处理按键事件。
这和我们的J2ME里不一样,J2ME里KeyPressed(int keyCode)是和相应的Canvas里关联在一起的。试着想象一下,如果从一个From高级UI切换到Canvas的低级UI,是不是需要用Command命令来控制?
然后就可以通过调用控件的OfferKeyEventL()把按键事件传递给该控件。控件可以自己决定是否处理某个按键事件,如果处理事件,则返回值EKeyWasConsumed,否则返回EKeyWasNotConsumed。按键事件会按次序传递给控件栈中的每个控件,直至其中某个控件返回EKeyWasConsumed或没有剩余控件为止。
OfferKeyEventL()有两个参数:按键事件(const EKeyEvent& aKeyEvent)、按键类型(TEventCode aType)。前者表明按键是哪一个键等信息,后者则是一个emnu类型,说明按键事件的种类。
和我们在J2ME里不同的是,J2ME里用三个方法来分别表示Pressed、Released、Repeated。而Symbian里用一个emnu类型的参数来说明按键事件的种类,分别是:EEventKeyDwon、EEventKey、EEventKeyUp。
用以下代码来做为事例恐怕更能说明问题:
TKeyReponse CMyControl::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType){
if(aType == EEventKeyUp){
switch(aKeyEvent.iCode){
case EKeyUpArrow:
//producing
return EKeyWasConsumed;
case EKeyDownArrow:
//producing
return EKeyWasConsumed;
default:
return EKeyWasNotConsumed;
}
}
return EKeyWasNotConsumed;
}
分享到:
相关推荐
在2000年代初,J2ME是手机游戏开发的主要平台,尤其在非智能手机(如诺基亚的Symbian系统手机)上广泛应用。本篇将深入探讨如何使用J2ME进行手机游戏开发。 ### 1. J2ME架构与配置 J2ME由两部分构成:K Virtual ...
通过对这些源码的学习,开发者不仅可以提升J2ME编程技能,还可以了解到手机游戏开发的基本流程和技巧,为未来的项目积累宝贵经验。同时,对于想要进入移动游戏开发领域的新人来说,这是一个极好的实践案例。
在2000年代中期,J2ME是手机游戏开发的主流技术之一,尤其在诺基亚Symbian系统和其他非智能平台上广泛使用。本篇将深入探讨J2ME手机游戏的开发过程和关键知识点。 1. **J2ME架构** J2ME由配置(Configurations)和...
3. **KJava**:KJava是诺基亚推出的一种实现J2ME的技术,它是Java在Symbian系统上的实现方式。在某些J2ME案例中,可能会涉及到KJava的相关特性。 4. **用户界面设计**:在J2ME中,开发者通常使用WTK(Wireless ...
《J2ME版超级玛丽:移动游戏开发的里程碑》 J2ME,全称为Java Micro Edition,是Java平台的一个子集,主要用于嵌入式设备和移动设备上的应用程序开发,包括智能手机和平板电脑。在2000年代初期,随着诺基亚等品牌的...
Canvas类是进行游戏开发的基础,可以绘制图形和处理用户输入。 **网络通信** J2ME通过 Connected Device Configuration (CDC) 和 Foundation Profile 提供网络功能。MIDP 2.0 引入了JSR 118,增强了网络连接能力,...
通过深入研究"J2ME 合金弹头S60源代码",开发者不仅可以掌握移动游戏开发的基本技能,还能了解到如何在资源受限的环境中实现高性能的游戏体验。这不仅是一次技术的探索,也是对经典游戏致敬的方式。
### Java 2 Micro Edition (J2ME) for Symbian OS 开发指南 #### 标题解析 本书《John Wiley and Sons Programming Java 2 Micro Edition for Symbian OS》主要聚焦于如何使用 Java 2 Micro Edition (J2ME) 在 ...
Java手机游戏开发是一个涵盖多个领域的综合过程,包括策划、美工设计、编程和测试等环节。在这个PPT教案中,我们将重点关注程序开发部分,特别是基于Java的手机游戏开发。 首先,游戏开发流程始于策划阶段,创意由...
通过对这两个版本的源代码进行学习和比较,我们可以了解到不同平台下J2ME应用程序的适配策略,同时也能深入理解Java游戏开发的基本原理和技巧。这对于提升Java编程技能,尤其是移动开发方向的能力,是非常有价值的。
如Eclipse集成开发环境(IDE)搭配EclipseME插件,用于J2ME(Java 2 Micro Edition)开发,或者SUN WTK(Sun Wireless Toolkit)和Symbian SDK,这些都是针对移动设备的游戏开发工具包。 实验室功能需求主要涉及...
【JAVA手机游戏开发】\n\nJAVA手机游戏开发主要涵盖了从策划、美工、程序到测试的全过程。作为IT技术讲座的重点,程序开发是讲解的核心,尤其是针对Java这门广泛应用于手机游戏开发的语言。Java因其跨平台性、面向...
S60是一个基于塞班系统(Symbian OS)的用户界面,广泛应用于诺基亚和其他一些品牌的智能手机。因此,ColorLinez手机版应能在支持S60v3的设备上流畅运行。 开发者指出,该游戏是其学习J2ME时的一个练习项目,这意味...
【gameloft(智乐)面试题】是一个与游戏开发公司Gameloft相关的面试资源集合,主要涵盖了Symbian和J2ME两个平台的技术问题。Symbian是曾经流行的智能手机操作系统,而J2ME(Java Micro Edition)是用于开发移动设备、...
6. 游戏设计的参考文献:游戏设计的参考文献包括杨大生、陈忠的《基于Symbian平台飞机大战游戏设计》、谢海军的《基于Java的手机游戏引擎的研究及实现》、马鹏强的《基于J2ME的手机五子棋游戏设计与实现》等。...
通过研究这些源代码,开发者可以学习到如何在J2ME环境下开发移动游戏,理解游戏开发的基本流程,同时也能深入研究移动设备上的性能优化和用户体验设计。对于希望进入移动游戏开发领域的程序员来说,这是一个很好的...
3G梦工场由四维创意教育科技有限公司运营,作为湖北省最权威的动漫游戏人才实训机构,其课程覆盖了从初级到高级的3G开发技术,包括J2ME、Symbian、Windows Mobile等多个平台。这些课程旨在为像中国移动、中国电信、...