Cocos2D-XNA入門篇
轉自:http://blog.csdn.net/fsafs168/article/details/7995601
首先,確定你安裝了windows Phone SDK,已經可以開發WP應用。然後,我們安裝Cocos2D-xna(下載地址:http://www.cocos2d-x.org/projects/cocos2d-x/wiki/Download)(轉者注:我在這裡找到了下載地址- http://www.cocos2d-x.org/news/53或https://github.com/cocos2d/cocos2d-x-for-xna/)。在官網,還有幫助文件可以看,不過其中類庫函式的解釋實在是慘不忍睹、、、、、、
好了,廢話不多說。下載下來之後,點選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
相關文章
- Spark入門篇Spark
- 入門篇(一)
- elasticsearch 入門篇Elasticsearch
- Prezi(入門篇)
- Redis 入門篇Redis
- SqlSugar ORM 入門到精通【一】入門篇SqlSugarORM
- HBase 基本入門篇
- llvm入門篇LVM
- Flutter入門篇(一)Flutter
- Flutter入門篇(二)Flutter
- 正則 (入門篇)
- Flutter動畫入門篇Flutter動畫
- node HelloWorld入門篇
- 樹莓派 -入門篇樹莓派
- 入門MySQL——架構篇MySql架構
- Java 集合類入門篇Java
- 介面測試入門篇
- 人工智慧入門篇人工智慧
- Spring Security 入門篇Spring
- Kafka基礎入門篇Kafka
- rust入門篇-hello worldRust
- Netty(一):入門篇Netty
- 前端入門篇之div前端
- SpringBoot入門篇Spring Boot
- Susy 2 教程 — 入門篇
- Systemd 入門教程:命令篇
- JDBC入門基礎篇JDBC
- C#人臉識別入門篇-STEP BY STEP人臉識別--入門篇C#
- 關於微服務入門篇微服務
- 入門MySQL——DML語句篇MySql
- Laravel入門(安裝部署篇)Laravel
- TypeScript入門指南(基礎篇)TypeScript
- 手寫ORM入門篇(一)ORM
- JS基礎入門篇( 一 )JS
- Python 入門 — 資源篇Python
- 效能測試之入門篇
- Go-Spring入門篇GoSpring
- 動態規劃入門篇動態規劃