Symbian游戏编程入门.docx

上传人:b****6 文档编号:8218379 上传时间:2023-01-29 格式:DOCX 页数:21 大小:25.10KB
下载 相关 举报
Symbian游戏编程入门.docx_第1页
第1页 / 共21页
Symbian游戏编程入门.docx_第2页
第2页 / 共21页
Symbian游戏编程入门.docx_第3页
第3页 / 共21页
Symbian游戏编程入门.docx_第4页
第4页 / 共21页
Symbian游戏编程入门.docx_第5页
第5页 / 共21页
点击查看更多>>
下载资源
资源描述

Symbian游戏编程入门.docx

《Symbian游戏编程入门.docx》由会员分享,可在线阅读,更多相关《Symbian游戏编程入门.docx(21页珍藏版)》请在冰豆网上搜索。

Symbian游戏编程入门.docx

Symbian游戏编程入门

Symbian游戏编程入门

一SymbianOS简介

 

1.1Symbian操作系统的起源和现状

Symbian成立于1998年,由爱立信、诺基亚、摩托罗拉和Psion共同出资筹建。

1999年,松下公司加入Symbian。

2000年,世界上第一款采用Symbian操作系统的手机EricssonR380成功上市,同年,索尼公司和三洋公司获得了Symbian的授权。

2001年,富士通公司获得了Symbian的授权。

诺基亚公司推出了Nokia7650-基于Symbian操作系统的2.5G手机.同时,Nokia9210开始公开发售。

2002年,西门子公司与索尼-爱立信公司入股Symbian,Sendo公司获得了Symbian的授权。

NTTDoCoMo发布3GFOMAF2051手机。

Symbian发布第一个用于3G系统的手机操作系统SymbianOSv7.0for3Gmobilephones。

2003年,诺基亚成功推出了第一款基于SymbianOSv7.0s的手机。

同年,三星公司成为Symbian的股东之一。

2004年,已经发布的采用SymbianOS的手机包括PanasonicX700,MotorolaA1000,Nokia9500,7610和N-GageQD,SamsungSGH-D710。

Arima公司与LG电子获得了Symbian的授权。

同时,联想公司决定将Symbian操作系统用于他们最近的手机产品中。

  而Symbian随着手机的发展得到了越来越多的市场。

在目前手机操作系统的争夺中,Symbian市场占有率达到了70%,是当之无愧的老大,而微软的windowsmobile和其他操作系统一共只有30%的份额。

  目前,全球主流手机操作系统争夺主要有三种:

  1.Symbian操作系统:

按持股比例多少,由诺基亚、爱立信、索尼爱立信、松下、三星、西门子共6家厂商顺序组成的Symbian联盟把持。

优点是请文明用语适中,对手机要求较低,缺点是开发人员少。

  2.windowsmobile操作系统:

优点在于可以方便地和PC上的windows进行互通,开发人员多,但缺点是授权费最高,对手机要求也高。

  3.Linux:

全球开放的系统,任何厂家和开发商均可使用,优点是请文明用语最低,对手机要求最低,缺点也很明显,厂家各自为营,手机之间的互通性差。

 

1.2Symbian操作系统使用的手机设备

 

采用Symbian操作系统的智能手机已经推出的包括以下几款:

SonyEricssonP910,SonyEricssonP900,SonyEricssonP800,FOMAF900i,FOMAF2051,Nokia6600,NokiaN-Gage,Nokia7610,NokiaN-GageQD,Nokia3660/3620,FOMAF2102V,Nokia7650,Nokia3650/3600,Nokia9290Communicator,Nokia9210Communicators,SendoX,MotorolaA920,MotorolaA925,SiemensSX1。

 

即将推出的还有:

ArimaU300,Nokia6670,Nokia6630,Nokia6260,Nokia9500,Nokia9300,Nokia6620,BenQP30,SamsungSGH-D710,PanasonicX700,MotorolaA1000,,FOMAF900iTFOMAF880iES,FOMAF900iC。

 

 

1.3SymbianOS的特点

SymbianOS具有以下6大特点:

1、操作系统是运行在ROM上的

2、系统是运行在电池驱动的设备上的

3、完全是面向对象的

4、基于组件的设计

5、被设计成确保用户的数据不会丢失

6、简单的UI系统

Symbian是真正的微核操作系统,所谓“微核”,就是说操作系统只有很小的一部分是运行在最高优先级的,其他的功能都是以Client-Server的方式提供。

下面是Symbian系统的内部结构图:

应用层:

Shell,OPL,及其他应用程序

=================================================================

系统层:

Dialogs,Menu,Toolbar,Icons,Resources,JavaVM,Grid,RichText,EditControl,ListControl,ApplicationFramework,JaveClassLibraries.=================================================================

服务层:

WindowServer,ProcessServer,SocketServer,SoundServer,WirelessServer,DatabaseServer,FileServer,AlarmServer,CommsServer,以及无线协议

=================================================================

内核:

euser.dll,ekern.exe,服务控制(supervisorserver),HAL(设备抽象层)

=================================================================

驱动程序层:

包括音频驱动,显示驱动,MMC驱动,键盘驱动,串并口驱动,DSP驱动,时钟控制器驱动等等

二.开发环境入门

2.1安装SDK及VC

Nokia根据手机的屏幕大小和请文明用语高低把手机分成了多个系列,现在使用的系列有:

Series40、Series60、Series80和Series90。

60系列采用Symbianos6.1,然后又根据手机屏幕的特点对UI做了一些修改,这个被修改了的Symbian就被称为Nokia的60系列平台。

使用60系列的手机型号包括:

Nokia6670、Nokia6630、Nokia6260、NokiaN-GageQD™、Nokia7610、Nokia6620、Nokia3620、Nokia3660、Nokia6600、Nokia3600、Nokia3650、Nokia7650、NokiaN-Gage™等。

 

下面我们就以60系列为例,介绍SDK的安装过程。

 

2.1.1安装SDK

第一步,到Nokia论坛注册,下载最新的SDK。

Nokia网站提供的Series60SDKforSymbianOSNokiaEditionSDK最新版本是v1.2,Series60SDKforSymbianOS的最新版本是v2.1。

下载网址:

 

第二步,到网站下载最新的ActivePerlScript安装程序。

到下载最新的J2RE。

 

第三步:

安装SDK,推荐为Symbian开发单独建一个目录,例如d:

\Symbian而不是使用C:

\programfiles等这样的目录。

 

第四步:

安装ActivePerl和J2RE,安装到默认目录即可。

 

第五步:

检查环境变量设定。

打开系统环境变量tab,然后看看有没有EPOCROOT,如果有的话,把它手动改成“\”。

改完之后应该是这个样子的:

 

EPOCROOT=\

 

然后,在系统PATH中加入\epoc32\tools目录以及\epoc32\gcc\bin目录就可以了。

 

实际上,SymbianSDK根本不用安装,直接把epoc32目录拷贝到一个机器上,然后照上述方法设定目录和环境变量就可以了。

 

2.1.2配置VC

如果我们使用的是VC6.0,我们要保证系统至少打了SP3补丁,否则系统会有警告提示。

如果我们使用的是VS.NET2003,我们就只能安装Series60SDKforSymbianOSv2.1,因为Series60SDKforSymbianOSNokiaEditionSDKv1.2在VS.NET2003无法正确建立工程。

 

如果要直接在vc6里创建新项目,要把\Symbian\6.1\Series60\Series60Tools\ApplicationWizard目录下的AvkonAppWiz.awx和AVKONAPPWIZ.HLP文件拷贝到vc6的模板目录C:

\ProgramFiles\MicrosoftVisualStudio\Common\MSDev98\Template下。

这样我们就可以在VC的新建工程中看到Series60AppWizardv1.9这个选项.

 

填入ProjectName以后,确认。

 

一路“Next”,一个最简单的Symbian应用程序就建立好了。

 

 

如果要将已经建立好的工程导入到VC6.0中,比如我们将SDK中的例子HelloWorld转换成一个VC6的项目,我们首先进入\Symbian\6.1\Series60\Series60Ex\HelloWorld目录。

在这里我们可以看到,在Symbian中,一个Project通常是按inc,src,group等目录组织,group目录里通常放的是项目文件,所以编译时要先到这里。

用命令提示符模式进入刚才说的那个目录下,然后执行:

 

bldmakebldfiles

 

这个命令会在group目录下生成一个abld.bat的批处理文件,并且会在\Symbian\6.1\Series60\Epoc32\BUILD下生成\Symbian\6.1\Series60\Epoc32\BUILD\SYMBIAN\6.1\SERIES60\SERIES60EX\HELLOWORLD\GROUP这个目录,并在最底层目录下生成一堆.make文件。

 

然后,我们在同一个目录运行刚才生成的abld.bat:

 

abldmakefilevc6

 

这样就会自动生成vc6的dsw文件,位置在\Symbian\6.1\Series60\Epoc32\BUILD\SYMBIAN\6.1\SERIES60\SERIES60EX\HELLOWORLD\GROUP\HELLOWORLD\WINS。

然后我们就可以在VC6种打开这个Symbian工程了。

 

2.2编译

我们可以直接使用SDK提供的工具编译Symbian工程,也可以使用VC6提供的集成环境来编译转化过的Symbian工程。

编译的结果存放在\Symbian\6.1\Series60\Epoc32\Release\wins\UDEB\Z\SYSTEM\apps目录中。

 

2.2.1使用SDK提供的工具编译Symbian工程

我们在上一节的那个位置继续输入:

 

abldbuildwinsudeb

 

这个命令会编译我们的程序,最后在\Symbian\6.1\Series60\Epoc32\Release\wins\UDEB目录下生成我们的helloworld,然后我们可以从开始菜单里运行模拟器的debug版,在模拟其中就可以运行helloworld了。

 

2.2.2使用VC6编译Symbian工程

我们直接打开运行abldmakefilevc6后生成的dsw文件,VC自动装载转化过的工程。

按F7便可以直接编译工程,编译结果同样放在\Symbian\6.1\Series60\Epoc32\Release\wins\UDEB目录中。

然后我们打开模拟器debug版,就可以看到我们编译好的工程了。

 

 

 

 

 

 

 

2.3打包

我们以SDK1.2提供的HelloWorld为例,制作可以在手机中安装的.SIS文件:

 

2.3.1.检查程序

首先,在命令行格式下,进入HelloWorld工程mmp文件所在目录,输入bldmakebldfiles和abldbuildwinsudeb,然后打开模拟器,检测程序有无错误。

 

2.3.2.编译工程

在程序无错误后,在命令行输入abldbuildarmiurel。

执行这个命令之后会在目录d:

\symbian\6.1\series60\epoc32\release\armi\urel生成HELLOWORLD.APP和HELLOWORLD.RSC两个文件。

 

2.3.3.建立.pkg文件

在d:

\Symbian\6.1\Series60\Series60Ex\helloworld\sis用记事本建立或者修改工程的pkg文件,内容如下:

 

;HelloWorld.pkg

 

;

 

;Language-standardlanguagedefinitions

 

&EN

 

 

 

;standardSISfileheader

 

#{"HelloWorld"},(0x10005B91),1,0,0

 

 

 

;SupportsSeries60v1.2

 

(0x101F8202),0,0,0,{"Series60ProductID"}

 

;

 

"d:

\symbian\6.1\series60\epoc32\release\armi\urel\HelloWorld.APP"-"!

:

\system\apps\HelloWorld\HelloWorld.app"

 

"d:

\symbian\6.1\series60\epoc32\release\armi\urel\HELLOWORLD.rSC"-"!

:

\system\apps\HelloWorld\HELLOWORLD.rSC"

 

其中,前面"d:

\symbian\6.1\series60\epoc32\release\armi\urel\HELLOWORLD.rSC"是要打包安装的文件,"!

:

\system\apps\HelloWorld\HELLOWORLD.rSC"是安装的目标位置。

在其中要注意的是,我们在目标位置中用“!

”代替了实际的盘符。

这样做得好处是在用户安装的时候,手机系统会提示用户选择要安装的位置,这就给了用户更大的灵活度。

另外,在Symbian系统中,安装的应用程序默认位置是“!

:

\system\apps”。

 

编辑好pkg文件后,保存至相应目录。

 

2.3.4.打包程序

在命令行中,转至pkg文件所在目录,运行命令makesisHelloWorld.pkg。

之后我们就在同一目录下得到了打包好的.sis文件。

 

 

 

 

2.4手机测试

将打包好地.sis文件上传至手机中,然后在手机的应用程序管理器中就可以看到我们打包好的文件。

选择“安装”命令,系统会提示用户要安装的位置,选择安装位置后,我们制作的应用程序就安装到手机中了。

 

我们回到手机的主菜单,就会发现新安装的HelloWorld应用程序。

打开运行,结果和在模拟器中看到的基本是一样的。

三.应用程序开发简介

 

3.1Symbian应用程序类型介绍

SymbianOS中编译的二进制代码由三种目标类型,EXE、APP和DLL。

 

3.2EXE程序的开发

当我们的应用程序并不需要用户界面,只需要使用一个单独进程的时候,我们可以创建.EXE程序。

.EXE程序包含一个主入口E32main(),当系统通过E32main()启动的时候,系统会创建新的进程,并在此进程中创建新的线程。

在创建EXE程序时,我们需要在.mmp文件中将程序的TARGET指定为EXE。

EXE通常是服务端或命令行程序,通常隐蔽的运行,他没有GUI,不能直接从主菜单运行。

 

下面是一个最基本的控制台应用程序的MMP文件:

 

targetConsole.exe

 

targettypeEXE

 

UID0x100039CE0x10005B91

 

TARGETPATH\system\apps\Console

 

sourcepath..\src

 

userinclude..\in

 

systeminclude\EPOC32\INCLUDE

 

systeminclude\EPOC32\INCLUDE\LIBC

 

sourcee32main.cppConsole.cpp

 

libraryeuser.lib

 

我们编译程序后,会生成Console.exe。

将程序打包安装后,我们无法直接运行此程序。

运行此程序可以有两种方法,第一是通过其他程序的调用来运行,第二是使用SeleQ一类的文件浏览器选择此程序然后运行。

 

 

在这里我们实现了一个console类用来显示上边的文字。

我们在设计一个后台程序时候也可以不实现console类,这样程序运行时候在屏幕上将不会有任何显示。

 

3.3APP程序的开发

当我们创建的应用程序需要使用用户界面的时候,我们需要创建APP程序。

一个APP程序可能包括自定义的字符串、菜单项、对话框等。

如果我们要创建一个APP程序,我们需要在.mmp文件中将程序的TARGET指定为APP。

 

我们最熟悉的Helloworld就是一个简单的APP程序,下面是它的mmp文件:

 

TARGETHelloWorldBasic.app

 

TARGETTYPEapp

 

UID0x100039CE0x10005B91

 

TARGETPATH\system\apps\helloworldbasic

 

SOURCEPATH..\src

 

SOURCEHelloWorldBasic.cpp

 

SOURCEHelloWorldBasicApplication.cpp

 

SOURCEHelloWorldBasicAppView.cpp

 

SOURCEHelloWorldBasicAppUi.cpp

 

SOURCEHelloWorldBasicDocument.cpp

 

SOURCEPATH..\group

 

RESOURCEHelloWorldBasic.rss

 

USERINCLUDE..\inc

 

SYSTEMINCLUDE\epoc32\include

 

LIBRARYeuser.lib

 

LIBRARYapparc.lib

 

LIBRARYcone.lib

 

LIBRARYeikcore.lib

 

LIBRARYavkon.lib

 

编译后我们会得到HelloWorldBasic.app,打包安装后我们可以直接选择运行此程序会看到如下图。

 

 

3.4DLL程序的开发

DLL提供多个入口,由系统或是已存在的线程(进程)调用。

 

有两种类型的DLL,静态DLL和多态DLL。

 

静态DLL为其他程序提供方法列表以供调用。

当程序启动的链接阶段静态DLL就被读到内存中。

 

多态DLL为其他程序提供某个固定的方法调用。

例如某个GUI应用提供了NewApplication()方法调用以启动应用程序。

这些DLL实现抽象的方法,如一个打印机驱动,socket协议或是一个应用程序。

它们的扩展名多不是.DLL,而是PRN、PRT或APP等。

它们从与DLL相关的类继承,并通常只有在程序需要它们时才读入。

前面的APP程序也算作一个多态DLL。

 

如果我们要创建的是DLL程序,我们需要在.mmp文件中将程序的TARGET指定为DLL。

如下所示:

 

TARGETtest.dll

 

TARGETTYPEdll

 

UID0x1000008D0x0CD52435

 

SOURCEPATH..\src

 

SOURCEtest.cpp

 

USERINCLUDE..\inc

 

SYSTEMINCLUDE\epoc32\include

 

LIBRARYeuser.lib

4.1Window,GraphicsContext和GraphicsDevice

4.1.1Window

在SymbianOS中,所有的绘图都是在窗口中进行的,窗口是与系统进行交互的基本单位。

我们在进行绘图前,首先要声明一个窗口:

 

CreateWindowL();

 

然后通过SetRect()来设置窗口的大小。

 

SetRect(aRect);

 

之后我们就可以进行绘图工作了。

 

4.1.2GraphicsContext

在Symbian系统中,所有的绘图工作都是通过GraphicsContext完成的。

其中包括绘制点、绘制矩形和绘制文本等。

所有的GraphicsContext都由CGraphicsContent类派生。

 

CGraphicsContent类包括的特性有:

 

画笔(Pen):

表示当前GraphicsContext所有要绘制的线的绘图模式,包括颜色、宽度、样式等,可以通过SetPenColor(),SetPenSize(),SetPenStyle()等方法进行设置。

 

刷子(Brush):

表示当前GraphicsContext用以填充的绘图模式,包括填充颜色,样式、背景色等,可通过SetBrushColor(),SetBrushOrigin(),SetBrushStyle(),UseBrushPattern(),DiscardBrushPattern()等方法进行设置。

 

字体(Font):

表示GraphicsContex当前所使用绘制文本的字体,使用UseFont(),DiscardFont()方法来设置或取消字体。

 

位置(Position):

表示GraphicsContex的当前位置。

可以通过MoveBy(),MoveTo()等方法来改变当前位置。

 

原点(Origin):

定义了相对于设备的原点的偏移量,默认值为(0,0),可以通过SetOrigin()来改变。

 

剪辑(Clipping):

定义了需要进行裁切的区域,通过SetClippingRect(),CancelClippingRect()方法进行设置或取消裁切区域。

 

4.1.3GraphicsDevice

在Symbian系统中,我们通过CGraphicsDevice实现GraphicsDevice,他指定了我们要操作的具体设备类的接口。

 

4.2基本绘图函数的使用

设置好CGraphicsContent后,我们就可以通过调用相关方法在窗口中绘制图形。

 

4.2.1文本:

voidD

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1