Cocos2D-XNA入门篇
2012-09-19 13:23
127 查看
首先,确定你安装了windows Phone SDK,已经可以开发WP应用。然后,我们安装Cocos2D-xna(下载地址:http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Download)。在官网,还有帮助文档可以看,不过其中类库函数的解释实在是惨不忍睹、、、、、、
好了,废话不多说。下载下来之后,点击install-template-mscs.msi进行安装,然后用VS打开编译运行,这里面有个test案例,没事的时候可以研究研究。这下子就安装完毕咯,你再打开VS的新建项目时候就能看到多了一个cocos2d-x的选项。不过我们暂时不用它,因为其自动生成的代码比较复杂。不适合初学者学习。接下来,我们这样做。
首先,新建一个XNA,WINDOWSPHONE 游戏项目。在其中引用cocos2d-xna.dll,在这里需要自行编译一个cocos2d-x XNA的dll。这个DLL就是我们之前下载安装之后编译运行生成的一个DLL。在那个工程文件中找一下就能找到。
(DLL引用,它的位置在编译之后的目录下.\cocos2d-x-for-xna-0.1.0\cocos2d-xna\bin\Windows Phone\Debug)
现在我们修改一下Game1.cs文件中的代码,将应用程序的管理交给COCOS2D,添加的代码如下:
添加引用:usingcocos2d; //所有的cocos2d的类都在这里
添加属性: CCApplication application; //每一个cocos2d游戏都需要这么一个实例化的类进行对应用的管理。而且这个类我们需要继承它写一个子类,暂时叫做MyApplication
在构造函数中添加如下代码:
application = new MyApplication(this,graphics);
this.Components.Add(application);
然后对Game1.cs文件的修改就完成咯,现在需要我们去写MyApplication类了。
为了方便,新建一个文件夹叫做Classes,然后在其中新建一个类MyApplication我们写的类都放在这里,这个类的代码如下:
这里面最重要的一个类是CCDirector
你可以把它当然是一个堆栈,使用它主要是使用它所带的静态函数。那么它是做什么的呢?我们一个程序中可能有很多界面、画面需要处理。而cocos2d就是依靠这个类来管理它们的出现顺序的。而且是以堆栈的方式,也就是说在栈顶的位置的画面,就是用户所能看到的画面。而这个画面在cocos2d中是依靠CCScene这个类来实现的,也就是说一个CCScene类就是一个画面,它们统一由CCDirector管理,其中处于栈顶的画面是用户所能看到的画面。
小脑袋瓜还受的了么?我们终于到了最后一个步骤了,就是在画面上显示一行字。我呢为了以后方便,直接使用菜单的方式实现了这个。看到MyApplication里的CCSceneMainMenu类了么?我们现在实现它!代码如下:
这里的CCMenuItemFont类代表是一个文字内容的菜单按钮,而CCMenu类则是它的容器,最后把他们放在外面这个画面里即可显示咯this.addChild(menu);。
最后我们别忘了在Game1.cs中引用我们刚才那个文件夹下的类using HelloWorld.Classes;然后,我们还需要创建一个字体,在Content/fonts/下,创建一个叫Arial.spritefont的文字描述XML。这一步只需要用VS自动生成的即可,如果想显示中文的话,那可是个麻烦事。。。。。
好了,现在运行我们的程序吧!
源码下载地址:http://pan.baidu.com/share/link?shareid=63317&uk=3792135684
好了,废话不多说。下载下来之后,点击install-template-mscs.msi进行安装,然后用VS打开编译运行,这里面有个test案例,没事的时候可以研究研究。这下子就安装完毕咯,你再打开VS的新建项目时候就能看到多了一个cocos2d-x的选项。不过我们暂时不用它,因为其自动生成的代码比较复杂。不适合初学者学习。接下来,我们这样做。
首先,新建一个XNA,WINDOWSPHONE 游戏项目。在其中引用cocos2d-xna.dll,在这里需要自行编译一个cocos2d-x XNA的dll。这个DLL就是我们之前下载安装之后编译运行生成的一个DLL。在那个工程文件中找一下就能找到。
(DLL引用,它的位置在编译之后的目录下.\cocos2d-x-for-xna-0.1.0\cocos2d-xna\bin\Windows Phone\Debug)
现在我们修改一下Game1.cs文件中的代码,将应用程序的管理交给COCOS2D,添加的代码如下:
添加引用:usingcocos2d; //所有的cocos2d的类都在这里
添加属性: CCApplication application; //每一个cocos2d游戏都需要这么一个实例化的类进行对应用的管理。而且这个类我们需要继承它写一个子类,暂时叫做MyApplication
在构造函数中添加如下代码:
application = new MyApplication(this,graphics);
this.Components.Add(application);
然后对Game1.cs文件的修改就完成咯,现在需要我们去写MyApplication类了。
为了方便,新建一个文件夹叫做Classes,然后在其中新建一个类MyApplication我们写的类都放在这里,这个类的代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using cocos2d; using Microsoft.Xna.Framework; namespace HelloWorld.Classes { class MyApplication : CCApplication { publicMyApplication(Game game,GraphicsDeviceManager graphics) : base(game,graphics) { CCApplication.sm_pSharedApplication=this; this.setOrientation(Orientation.kOrientationPortrait); //设置为竖屏,资料来源官网文档 } ///<summary> /// Implement for initialize OpenGL instance, set source path,etc... ///初始化OpenGL实例,设置源码路径等等 ///说白了就是初始化应用程序函数,覆盖一下就好,不用写什么 ///</summary> public override boolinitInstance() { returnbase.initInstance(); } ///<summary> /// 实现 CCDirector 和 CCScene 的初始化. ///</summary> ///<returns> /// true 初始化成功 /// false初始化失败 ///</returns> public override boolapplicationDidFinishLaunching() { //初始化 director CCDirectorpDirector =CCDirector.sharedDirector(); pDirector.setOpenGLView(); //设置成 FPS显示 pDirector.DisplayFPS = true; // 设置FPS动画刷新值,无特殊要求的话默认设置为1.0/60 pDirector.animationInterval = 1.0 /60; // 创建一个画面 CCScenepScene = new MainMenu(); // 将画面加入栈 pDirector.runWithScene(pScene); returntrue; } ///<summary> ///在应用程序进入后台时,调用这个函数 ///</summary> public override voidapplicationDidEnterBackground() { CCDirector.sharedDirector().pause(); // if youuse SimpleAudioEngine, it must be pause //SimpleAudioEngine::sharedEngine()->pauseBackgroundMusic(); } ///<summary> ///当应用程序从后台回到前台时,调用这个函数 ///</summary> public override voidapplicationWillEnterForeground() { CCDirector.sharedDirector().resume(); // if youuse SimpleAudioEngine, it must resume here //SimpleAudioEngine::sharedEngine()->resumeBackgroundMusic(); } } }
这里面最重要的一个类是CCDirector
你可以把它当然是一个堆栈,使用它主要是使用它所带的静态函数。那么它是做什么的呢?我们一个程序中可能有很多界面、画面需要处理。而cocos2d就是依靠这个类来管理它们的出现顺序的。而且是以堆栈的方式,也就是说在栈顶的位置的画面,就是用户所能看到的画面。而这个画面在cocos2d中是依靠CCScene这个类来实现的,也就是说一个CCScene类就是一个画面,它们统一由CCDirector管理,其中处于栈顶的画面是用户所能看到的画面。
小脑袋瓜还受的了么?我们终于到了最后一个步骤了,就是在画面上显示一行字。我呢为了以后方便,直接使用菜单的方式实现了这个。看到MyApplication里的CCSceneMainMenu类了么?我们现在实现它!代码如下:
using System; using System.Collections.Generic; using System.Linq; using System.Text; using cocos2d; namespace HelloWorld.Classes { class MainMenu : CCScene { public MainMenu() { CCMenuItemFonthello =CCMenuItemFont.itemFromString("Hello World"); CCMenumenu = CCMenu.menuWithItems(hello); this.addChild(menu); } } }
这里的CCMenuItemFont类代表是一个文字内容的菜单按钮,而CCMenu类则是它的容器,最后把他们放在外面这个画面里即可显示咯this.addChild(menu);。
最后我们别忘了在Game1.cs中引用我们刚才那个文件夹下的类using HelloWorld.Classes;然后,我们还需要创建一个字体,在Content/fonts/下,创建一个叫Arial.spritefont的文字描述XML。这一步只需要用VS自动生成的即可,如果想显示中文的话,那可是个麻烦事。。。。。
好了,现在运行我们的程序吧!
源码下载地址:http://pan.baidu.com/share/link?shareid=63317&uk=3792135684
相关文章推荐
- Cocos2D-XNA入门篇
- Cocos2d入门--3--向量的应用
- 使用cocos2d开发iphone游戏入门概念
- Cocos2d-x 3.x入门教程(一):基础概念
- XNA入门(四)纹理
- Cocos2d-x从入门到精通第四课《Cocos2d-x中的FileUtils》
- [置顶] 【cocos2d-x入门实战】微信飞机大战之四:飞机登场咯
- cocos2d-js 入门一 ([isNaN()和isFinite(),字符和Number之间的转化)
- COCOS2D-X跨ANDROID&IOS平台开发入门教程
- Cocos2d-x跨Android&iOS平台开发入门
- Cocos2d-x 3.1.1 学习日志1--安装和创建项目(入门必看)
- IOS环境搭建与开发入门-------------------cocos2d-x 3.0正式版本(7.8)
- Cocos2d-X for XNA游戏引擎发布
- (译)cocos2d-x跨android&ios平台开发入门教程
- cocos2d-x box2d 入门
- Cocos2d入门及第一次运行时遇到的问题
- 【cocos2d-x入门之二】游戏和引擎构成
- cocos2d-x新手入门教程
- 【Cocos2d入门教程一】Cocos2d-x环境搭建
- 从零3D基础入门XNA 4.0(1)——3D开发基础