首先,確定你安裝了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我們寫的類都放在這裏,這個類的代碼如下:
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