Windows phone上最好的游戲引擎cocos2d-x for XNA發布也有幾個月了,作為移植團隊我們一直沒有時間獻上一些教程,現在我們要開始了,打開你的Visual Studio,我們開始學習吧!
這系列教程我會講解分析大部分開發者會用到的cocos2d-x for XNA的常用類的功能及用法,帶些示例代碼,並且,考慮到大部分做Windows phone開發的人都熟悉Silverlight,我會將cocos2d-x for XNA和Silverlight做一些對比,便於你更好更快的掌握cocos2d,做出很好的游戲。
在了解了CCApplication之后,接下來我們就應該學習CCDirector了,因為在應用程序入口類CCApplication的的Draw方法里,直接進入了CCDirector的mainLoop方法。
由cocos2d的基礎概念里面我們應該看到,CCDirector處於最頂端:
PS:cocos2d中的類基本上都有比較詳細的注釋,而類的注釋非常重要,它基本上介紹了該類的主要功能。我們看下CCDirector的注釋:
Class that creates and handle the main Window and manages how and when to execute the Scenes.
The CCDirector is also responsible for:
- initializing the OpenGL context
- setting the OpenGL pixel format (default on is RGB565)
- setting the OpenGL buffer depth (default one is 0-bit)
- setting the projection (default one is 3D)
- setting the orientation (default one is Protrait)
Since the CCDirector is a singleton, the standard way to use it is by calling:
_ CCDirector::sharedDirector()->methodName();
The CCDirector also sets the default OpenGL context:
- GL_TEXTURE_2D is enabled
- GL_VERTEX_ARRAY is enabled
- GL_COLOR_ARRAY is enabled
- GL_TEXTURE_COORD_ARRAY is enabled
從這里我們不難看出:
CCDirector主要負責當前窗口的內容,並且負責場景的切換和管理,它同時還還負責:
1. OpenGL中上下文的初始化(當然這在XNA中很多東西沒有了)
2. 設置投影方式,默認為3D透視投影
3. 設置屏幕方向
4. 它是一個單實例
5. 設置着色器一些通用參數
PS:
1. 對於投影方式,cocos2d同時支持2D投影和3D投影,默認為3D投影,2D的情況下采用的是正投影。但是cocos2d大部分的功能需要3D的方式才能實現,所以你不應該隨便切換為2D,除非你確保2D的方式能實現接下來要使用的功能。cocos2d中的2D投影主要是用來處理和2D相關的繪制,並且出於性能考慮,在某些特殊的情況下用2D來繪制,以后會講到。
2. 對於XNA中basicEffect的一些通用默認參數的設置,比如TextureEnabled可以放在CCDirector來做,目前全部放到Draw方法中設置,這個以后放在優化之列。
但是除此之外,CCDirector還有許多輔助的功能,這些是注釋當中沒有的,而開發中會遇到的,這里我在列舉一下:
1. 顯示和設置FPS
2. 修改窗口大小,繪制縮放比例
3. OpenGL坐標和屏幕位置之間的轉化,也就是基於左上角為原點坐標系中的點,和左下角為原點的坐標系中的點的坐標轉換,這個比如在XNA中接受的Touch事件中的點是左上角為原點的坐標系,在處理的時候需要轉換為左下角為原點的坐標系
4. 獲取和設置窗口尺寸
5. 一共運行了多少幀
6. 設置AlphaBlending,深度測試等
當然,CCDirector最重要的功能是場景管理,我們將在下一貼重點分析。
歡迎加入QQ群:190784175(cocos2d-x for XNA開源社區), 由cocos2d-x for XNA開發團隊創建
