




已阅读5页,还剩9页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Symbian游戏编程入门一 Symbian OS简介 1.1 Symbian操作系统的起源和现状Symbian成立于1998年,由爱立信、诺基亚、摩托罗拉和Psion共同出资筹建。1999年,松下公司加入Symbian。2000年,世界上第一款采用Symbian操作系统的手机Ericsson R380成功上市,同年,索尼公司和三洋公司获得了Symbian 的授权。 2001年, 富士通公司获得了Symbian的授权。诺基亚公司推出了Nokia 7650-基于 Symbian操作系统的2.5G手机. 同时,Nokia 9210开始公开发售。2002年,西门子公司与索尼-爱立信公司入股Symbian,Sendo公司获得了Symbian的授权。NTT DoCoMo 发布3G FOMA F2051手机。 Symbian发布第一个用于3G系统的手机操作系统Symbian OS v7.0 for 3G mobile phones。2003年,诺基亚成功推出了第一款基于Symbian OS v7.0s的手机。同年,三星公司成为Symbian的股东之一。2004年,已经发布的采用Symbian OS 的手机包括Panasonic X700, Motorola A1000, Nokia 9500, 7610 和N-Gage QD, Samsung SGH-D710。Arima公司与LG电子获得了Symbian的授权。同时,联想公司决定将Symbian操作系统用于他们最近的手机产品中。而Symbian随着手机的发展得到了越来越多的市场。在目前手机操作系统的争夺中,Symbian市场占有率达到了70,是当之无愧的老大,而微软的windows mobile和其他操作系统一共只有30的份额。目前,全球主流手机操作系统争夺主要有三种: 1.Symbian操作系统:按持股比例多少,由诺基亚、爱立信、索尼爱立信、松下、三星、西门子共6家厂商顺序组成的Symbian联盟把持。优点是请文明用语适中,对手机要求较低,缺点是开发人员少。 2.windows mobile操作系统:优点在于可以方便地和PC上的windows进行互通,开发人员多,但缺点是授权费最高,对手机要求也高。 3.Linux:全球开放的系统,任何厂家和开发商均可使用,优点是请文明用语最低,对手机要求最低,缺点也很明显,厂家各自为营,手机之间的互通性差。1.2 Symbian操作系统使用的手机设备采用Symbian操作系统的智能手机已经推出的包括以下几款:Sony Ericsson P910,Sony Ericsson P900,Sony Ericsson P800, FOMA F900i,FOMA F2051, Nokia 6600,Nokia N-Gage,Nokia 7610,Nokia N-Gage QD,Nokia 3660/3620,FOMA F2102V, Nokia 7650,Nokia 3650/3600,Nokia 9290 Communicator,Nokia 9210 Communicators,Sendo X,Motorola A920,Motorola A925,Siemens SX1。即将推出的还有:Arima U300 ,Nokia 6670,Nokia 6630 ,Nokia 6260 ,Nokia 9500,Nokia 9300,Nokia 6620,BenQ P30,Samsung SGH-D710,Panasonic X700,Motorola A1000,FOMA F900iT FOMA F880iES,FOMA F900iC。1.3 Symbian OS的特点Symbian OS具有以下6大特点:1、操作系统是运行在ROM上的2、系统是运行在电池驱动的设备上的3、完全是面向对象的4、基于组件的设计5、被设计成确保用户的数据不会丢失6、简单的UI系统Symbian 是真正的微核操作系统,所谓“微核”,就是说操作系统 只有很小的一部分是运行在最高优先级的,其他的功能都是以Client-Server的方式提供。下面是Symbian系统的内部结构图:应用层:Shell, OPL, 及其他应用程序=系统层:Dialogs, Menu, Toolbar, Icons, Resources, JavaVM, Grid, Rich Text, Edit Control, List Control, Application Framework, Jave Class Libraries. =服务层:Window Server, Process Server, Socket Server, Sound Server, Wireless Server, Database Server, File Server, Alarm Server, Comms Server, 以及无线协议=内核:euser.dll, ekern.exe, 服务控制(supervisor server), HAL(设备抽象层)=驱动程序层:包括音频驱动,显示驱动,MMC驱动,键盘驱动,串并口驱动 ,DSP驱动,时钟控制器驱动等等二.开发环境入门2.1 安装SDK及VCNokia根据手机的屏幕大小和请文明用语高低把手机分成了多个系列,现在使用的系列有:Series 40、Series 60、Series 80 和Series 90。60系列采用Symbian os 6.1,然后又根据手机屏幕的特点对UI做了一些修改,这个被修改了的Symbian就被称为Nokia的60系列平台。使用60系列的手机型号包括:Nokia 6670、 Nokia 6630、 Nokia 6260 、Nokia N-Gage QD 、Nokia 7610 、Nokia 6620 、Nokia 3620 、Nokia 3660 、Nokia 6600 、Nokia 3600、Nokia 3650、Nokia 7650、Nokia N-Gage等。下面我们就以60系列为例,介绍SDK的安装过程。2.1.1 安装SDK第一步,到Nokia论坛注册,下载最新的SDK。Nokia 网站提供的Series 60 SDK for Symbian OS Nokia Edition SDK最新版本是v1.2,Series 60 SDK for Symbian OS的最新版本是v2.1。下载网址:/main/0,6566,034-4,00.html第二步,到 网站下载最新的Active Perl Script 安装程序。到/en/download/manual.jsp 下载最新的J2RE。第三步:安装SDK,推荐为Symbian开发单独建一个目录,例如d:Symbian而不是使用C:program files等这样的目录。第四步:安装Active Perl和J2RE,安装到默认目录即可。第五步:检查环境变量设定。打开系统环境变量tab,然后看看有没有EPOCROOT,如果有的话,把它手动改成“” 。改完之后应该是这个样子的:EPOCROOT = 然后,在系统PATH中加入 epoc32tools目录以及epoc32gccbin目录就可以了。实际上,Symbian SDK根本不用安装,直接把epoc32目录拷贝到一个机器上,然后照上述方法设定目录和环境变量就可以了。2.1.2 配置VC如果我们使用的是VC 6.0,我们要保证系统至少打了SP3补丁,否则系统会有警告提示。如果我们使用的是VS.NET2003, 我们就只能安装Series 60 SDK for Symbian OS v2.1,因为Series 60 SDK for Symbian OS Nokia Edition SDK v1.2在VS.NET2003无法正确建立工程。如果要直接在vc6里创建新项目,要把Symbian6.1Series60Series60Tools Application Wizard目录下的 AvkonAppWiz.awx和AVKONAPPWIZ.HLP文件拷贝到vc6的模板目录C:Program Files Microsoft Visual Studio Common MSDev98 Template下。这样我们就可以在VC的新建工程中看到Series 60 AppWizard v 1.9这个选项.填入Project Name 以后,确认。一路“Next”,一个最简单的Symbian应用程序就建立好了。如果要将已经建立好的工程导入到VC6.0中,比如我们将SDK中的例子HelloWorld转换成一个VC6的项目,我们首先进入Symbian6.1Series60Series60ExHelloWorld目录。在这里我们可以看到,在Symbian中,一个Project通常是按inc, src, group等目录组织,group目录里通常放的是项目文件,所以编译时要先到这里。用命令提示符模式进入刚才说的那个目录下,然后执行:bldmake bldfiles这个命令会在group目录下生成一个abld.bat的批处理文件,并且会在Symbian 6.1Series60Epoc32BUILD下生成Symbian6.1Series60Epoc32BUILDSYMBIAN6.1 SERIES60SERIES60EXHELLOWORLDGROUP这个目录,并在最底层目录下生成一堆 .make文件。然后,我们在同一个目录运行刚才生成的abld.bat:abld makefile vc6这样就会自动生成vc6的dsw文件,位置在Symbian6.1Series60Epoc32BUILD SYMBIAN6.1 SERIES60SERIES60EXHELLOWORLDGROUPHELLOWORLDWINS。然后我们就可以在VC6种打开这个Symbian工程了。2.2 编译我们可以直接使用SDK提供的工具编译Symbian 工程,也可以使用VC6提供的集成环境来编译转化过的Symbian 工程。编译的结果存放在Symbian6.1Series60Epoc32 ReleasewinsUDEBZSYSTEMapps目录中。2.2.1使用SDK提供的工具编译Symbian 工程我们在上一节的那个位置继续输入:abld build wins udeb这个命令会编译我们的程序,最后在Symbian6.1Series60Epoc32ReleasewinsUDEB目录下生成我们的helloworld,然后我们可以从开始菜单里运行模拟器的debug版,在模拟其中就可以运行helloworld了。2.2.2 使用VC6编译Symbian 工程我们直接打开运行abld makefile vc6后生成的dsw文件,VC自动装载转化过的工程。按F7便可以直接编译工程,编译结果同样放在Symbian6.1Series60Epoc32Release winsUDEB目录中。然后我们打开模拟器debug 版,就可以看到我们编译好的工程了。2.3 打包我们以SDK 1.2提供的HelloWorld为例,制作可以在手机中安装的.SIS文件:2.3.1检查程序首先,在命令行格式下,进入HelloWorld工程mmp文件所在目录,输入bldmake bldfiles和abld build wins udeb,然后打开模拟器,检测程序有无错误。2.3.2编译工程在程序无错误后,在命令行输入abld build armi urel 。执行这个命令之后会在目录d:symbian6.1series60epoc32releasearmiurel生成HELLOWORLD.APP和HELLOWORLD.RSC两个文件。2.3.3建立.pkg文件在d:Symbian6.1Series60Series60Exhelloworldsis 用记事本建立或者修改工程的pkg文件,内容如下:; HelloWorld.pkg;Language - standard language definitions&EN; standard SIS file header#HelloWorld,(0x10005B91),1,0,0;Supports Series 60 v 1.2(0x101F8202), 0, 0, 0, Series60ProductID;d:symbian6.1series60epoc32releasearmiurelHelloWorld.APP-!:systemappsHelloWorldHelloWorld.appd:symbian6.1series60epoc32releasearmiurelHELLOWORLD.rSC-!:systemappsHelloWorldHELLOWORLD.rSC其中,前面d:symbian6.1series60epoc32releasearmiurelHELLOWORLD.rSC是要打包安装的文件,!:systemappsHelloWorldHELLOWORLD.rSC是安装的目标位置。在其中要注意的是,我们在目标位置中用“!”代替了实际的盘符。这样做得好处是在用户安装的时候,手机系统会提示用户选择要安装的位置,这就给了用户更大的灵活度。另外,在Symbian 系统中,安装的应用程序默认位置是“!:systemapps ”。编辑好pkg文件后,保存至相应目录。2.3.4打包程序在命令行中,转至pkg文件所在目录,运行命令makesis HelloWorld.pkg。之后我们就在同一目录下得到了打包好的.sis文件。2.4 手机测试将打包好地.sis文件上传至手机中,然后在手机的应用程序管理器中就可以看到我们打包好的文件。选择“安装”命令,系统会提示用户要安装的位置,选择安装位置后,我们制作的应用程序就安装到手机中了。我们回到手机的主菜单,就会发现新安装的HelloWorld 应用程序。打开运行,结果和在模拟器中看到的基本是一样的。三. 应用程序开发简介 3.1 Symbian应用程序类型介绍Symbian OS 中编译的二进制代码由三种目标类型,EXE、APP和DLL。3.2 EXE程序的开发当我们的应用程序并不需要用户界面,只需要使用一个单独进程的时候,我们可以创建.EXE 程序。.EXE程序包含一个主入口E32main(),当系统通过E32main()启动的时候,系统会创建新的进程,并在此进程中创建新的线程。在创建EXE 程序时,我们需要在.mmp文件中将程序的TARGET指定为 EXE 。EXE通常是服务端或命令行程序,通常隐蔽的运行,他没有GUI,不能直接从主菜单运行。下面是一个最基本的控制台应用程序的MMP文件:target Console.exetargettype EXEUID 0x100039CE 0x10005B91TARGETPATH systemappsConsolesourcepath .srcuserinclude .insysteminclude EPOC32INCLUDEsysteminclude EPOC32INCLUDELIBCsource e32main.cpp Console.cpplibrary euser.lib我们编译程序后,会生成Console.exe。将程序打包安装后,我们无法直接运行此程序。运行此程序可以有两种方法,第一是通过其他程序的调用来运行,第二是使用SeleQ 一类的文件浏览器选择此程序然后运行。在这里我们实现了一个console类用来显示上边的文字。我们在设计一个后台程序时候也可以不实现console类,这样程序运行时候在屏幕上将不会有任何显示。3.3 APP程序的开发当我们创建的应用程序需要使用用户界面的时候,我们需要创建APP程序。一个APP程序可能包括自定义的字符串、菜单项、对话框等。如果我们要创建一个APP程序,我们需要在.mmp文件中将程序的TARGET指定为 APP 。我们最熟悉的Helloworld 就是一个简单的APP 程序,下面是它的mmp 文件:TARGET HelloWorldBasic.appTARGETTYPE appUID 0x100039CE 0x10005B91TARGETPATH systemappshelloworldbasicSOURCEPATH .srcSOURCE HelloWorldBasic.cppSOURCE HelloWorldBasicApplication.cppSOURCE HelloWorldBasicAppView.cppSOURCE HelloWorldBasicAppUi.cppSOURCE HelloWorldBasicDocument.cppSOURCEPATH .groupRESOURCE HelloWorldBasic.rssUSERINCLUDE .incSYSTEMINCLUDE epoc32includeLIBRARY euser.libLIBRARY apparc.libLIBRARY cone.libLIBRARY eikcore.libLIBRARY avkon.lib编译后我们会得到HelloWorldBasic.app,打包安装后我们可以直接选择运行此程序会看到如下图。3.4 DLL程序的开发DLL提供多个入口,由系统或是已存在的线程(进程)调用。有两种类型的DLL, 静态DLL和多态DLL。静态DLL为其他程序提供方法列表以供调用。当程序启动的链接阶段静态DLL就被读到内存中。多态DLL为其他程序提供某个固定的方法调用。例如某个GUI应用提供了NewApplication()方法调用以启动应用程序。这些DLL实现抽象的方法,如一个打印机驱动,socket协议或是一个应用程序。它们的扩展名多不是.DLL,而是PRN、PRT 或APP等。它们从与DLL相关的类继承,并通常只有在程序需要它们时才读入。前面的APP程序也算作一个多态DLL。如果我们要创建的是DLL程序,我们需要在.mmp文件中将程序的TARGET指定为 DLL。如下所示:TARGET test.dllTARGETTYPE dllUID 0x1000008D 0x0CD52435SOURCEPATH .srcSOURCE test.cppUSERINCLUDE .incSYSTEMINCLUDE epoc32includeLIBRARY euser.lib4.1 Window, Graphics Context和Graphics Device4.1.1 Window在Symbian OS 中,所有的绘图都是在窗口中进行的,窗口是与系统进行交互的基本单位。我们在进行绘图前,首先要声明一个窗口:CreateWindowL();然后通过SetRect()来设置窗口的大小。SetRect(aRect);之后我们就可以进行绘图工作了。4.1.2 Graphics Context在Symbian 系统中,所有的绘图工作都是通过Graphics Context完成的。其中包括绘制点、绘制矩形和绘制文本等。所有的Graphics Context都由CGraphicsContent类派生。CGraphicsContent类包括的特性有:画笔(Pen):表示当前Graphics Context所有要绘制的线的绘图模式,包括颜色、宽度、样式等,可以通过SetPenColor(), SetPenSize(), SetPenStyle()等方法进行设置。刷子(Brush):表示当前Graphics Context用以填充的绘图模式,包括填充颜色,样式、背景色等,可通过SetBrushColor(), SetBrushOrigin(), SetBrushStyle(),UseBrushPattern(), DiscardBrushPattern()等方法进行设置。字体(Font):表示Graphics Contex当前所使用绘制文本的字体,使用UseFont(),DiscardFont()方法来设置或取消字体。位置(Position):表示Graphics Contex的当前位置。可以通过MoveBy(), MoveTo()等方法来改变当前位置。原点 (Origin):定义了相对于设备的原点的偏移量,默认值为(0,0),可以通过SetOrigin()来改变。剪辑(Clipping):定义了需要进行裁切的区域,通过SetClippingRect(),CancelClippingRect()方法进行设置或取消裁切区域。4.1.3 Graphics Device在Symbian系统中,我们通过CGraphicsDevice实现Graphics Device,他指定了我们要操作的具体设备类的接口。4.2 基本绘图函数的使用设置好CGraphicsContent后,我们就可以通过调用相关方法在窗口中绘制图形。4.2.1文本:void DrawText(const TDesC& aText,const TPoint& aPosition)void DrawText(const TDesC& aText,const TRect& aBox,TInt aBaselineOffset, TTextAlign aAlignment=ELeft,TInt aLeftMargin=0)其中第一个直接在窗口中绘制文本,其中aText给出来要绘制的文本内容,aPosition制定了要绘制文本的起始位置。第二个在绘制文本的同时,还要以给定的aBox绘制一个矩形外框。aAlignment参数指定了文本的对齐方向,默认为左对齐;aLeftMargin指定了间隔距离,默认值为0。由于Symbian系统的内存受限制,所以,没有使用的字体系统是不会调入内存的,因此我们在绘制文本前,应该首先使用UseFont()设置系统的字体:void UseFont(const CFont* aFont)这样系统会将字体调入内存中。在我们不使用这个字体以后,为了节省内存,要使用DiscardFont()释放掉内存中的字体。void DiscardFont()4.2.2点:我们通过Plot()来绘制一个单独的点。点的绘制模式与当前的画笔(Pen)设置相同。void Plot(const TPoint& aPoint)当画笔的宽度大于一个像素的时候,系统会以aPoint为圆心,画笔的宽度为直径绘制一个圆,并用画笔的颜色填充这个圆。4.2.3线:绘制直线的方法有DrawLine()、 DrawLineBy()、 DrawLineTo()和DrawPolyLine()、DrawArc(),绘制模式与当前的画笔(Pen)设置相同。void DrawLine(const TPoint& aPoint1,const TPoint& aPoint2)DrawLine()在aPoint1和aPonit2之间绘制一条直线。void DrawLineTo(const TPoint& aPoint)DrawLineTo()从当前点向aPoint绘制一条直线。void DrawLineBy(const TPoint& aVector)DrawLineBy()从当前点向相对当前点位置为aVector的点绘制一条直线。void DrawPolyLine(const CArrayFix* aPointList)DrawPolyLine()根据给定的位置数组从第一个点开始向第二个点绘制直线,然后以第二个点为起始点向第三个点绘制直线。直到最后一个点。在这里需要注意的一点是,在绘制直线的时候,系统并不绘制直线的最后一点,如果我们希望绘制一条包括最后一点的直线,我们可以使用上边的Plot()方法绘制最后一个点。4.2.4图形:我们可以使用系统提供的方法直接绘制五种简单图形,分别是矩形(rectangle)、圆角矩形(rounded rectangle)、多边形(polygon)、椭圆形(ellipse)和饼型(pie slice)。绘制模式和填充模式与当前的画笔(Pen)、刷子(Brush)设置相同矩形:void DrawRect(const TRect& aRect)DrawRect()在屏幕上根据给定的aRect绘制矩形。圆角矩形:void DrawRoundRect(const TRect& aRect,const TSize& aCornerSize)DrawRoundRect()在屏幕上根据给定的aRect绘制矩形,并根据给定的aCornerSize确定圆角的直径。多边形:TInt DrawPolygon(const CArrayFix* aPointList,TFillRule aFillRule=EAlternate)TInt DrawPolygon(const TPoint* aPointList,TInt aNumPoints,TFillRule aFillRule=EAlternate)DrawPolygon()根据给定的点集aPointList按顺序连接并按照aFillRule规则填充多边形。椭圆形:void DrawEllipse(const TRect& aRect)DrawEllipse()在给定的aRect区域中绘制椭圆形。如果给定的区域是正方形,那么将绘制出圆形。饼形:void DrawPie(const TRect& aRect,const TPoint& aStart,const TPoint& aEnd)DrawPie()通过给定的起始点aStart和结束点aEnd在由aRect形成的椭圆内截取相应的饼型区域。4.3 Bmp文件的读取和显示4.3.1读取:首先 我们定义要读取的位图所在位置:_LIT (KMultiBitmapFilename,systemappsgraphicsimages.mbm);其中images.mdm是我们的位图文件经过压缩打包的结果,是一个多位图文件。我们要在.mmp文件中作如下定义:START BITMAP images.mbmHEADERTARGETPATH systemappsgraphicsSOURCEPATH .bitmapsSOURCE c12 image1.bmpSOURCE c12 image2.bmpEND系统产生一个位图头文件.mbg,这个头文件提供了一个访问位图的ID。例如,在Epoc32include中的IMAGES.mbg文件包含如下内容:enum TMbmImagesEMbmImagesImage1,EMbmImagesImage2,;接下来我们定义:CFbsBitmap* iImage1;CFbsBitmap* iImage2;然后我们就可以将mdm中的位图文件读取出来:iImage1 = new (ELeave) CFbsBitmap();CleanupStack:PushL(iImage1);TInt loadException = iImage1 -Load(KMultiBitmapFilename,EMbmImagesImage1);User:LeaveIfError(loadException);CleanupStack:Pop(iImage1);4.3.2显示:通过使用DrawBitmap()方法,可以将已经读取或绘制好的位图显示在窗口中。void DrawBitmap(const TPoint& aTopLeft,const CFbsBitmap* aSource)这里,aTopLeft指定了要绘制的位图的左上角坐标,aSource给出了要绘制的位图的内容。void DrawB
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年滁州明光市消防救援大队招聘政府专职消防员15人考前自测高频考点模拟试题附答案详解
- GP369-生命科学试剂-MCE
- 安全培训效果评价内容课件
- 安全培训效果简述及评价课件
- 2025届特发集团春季校园招聘模拟试卷含答案详解
- 服装纺织行业供应链升级方案
- 2025年绥化市庆安县急需紧缺教师校园招聘36人考前自测高频考点模拟试题及答案详解(历年真题)
- 安全培训效果存在问题课件
- 2025年抚松县面向普通高等院校公开招聘高中教师(9人)考前自测高频考点模拟试题及答案详解(有一套)
- IT设备采购及维护标准化手册提升IT管理效率
- 2025年锦州辅警考试题库(附答案)
- 联名合作授权协议书范本
- 2025年广东中考历史试卷真题解读及答案讲评课件
- 律师从事公司自行清算业务操作建议流程
- 营救小羊中班课件
- 橡皮筋驱动小车说课课件
- 跟岗干部管理办法中组部
- 乐理知识入门教学课件
- 培训安全知识内容
- 医疗器械岗位职责、质量管理制度培训试题及答案
- 电网调度行业脑机接口技术应用案例分析
评论
0/150
提交评论