Cocos2D-XNA入門篇

首先,確定你安裝了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

發佈了17 篇原創文章 · 獲贊 6 · 訪問量 7萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章