Cocos2D-x for XNA類解析(1): CCApplication


   Windows phone上最好的游戲引擎cocos2d-x for XNA發布也有幾個月了,作為移植團隊我們一直沒有時間獻上一些教程,現在我們要開始了,打開你的Visual Studio,我們開始學習吧!
   這系列教程我會講解分析大部分開發者會用到的cocos2d-x for XNA的常用類的功能及用法,帶些示例代碼,更多的交流請加我們的QQ群,在文章末尾:
 
   大部分框架,基本上都可以分為兩部分:
      1.  一個入口主類,它定義了整個應用程序的生命周期,並提供一些全局的資源
      2.  一些繪制到屏幕上的“頁面”控件。
   如果大家熟悉 Silverlight for Windows phone ,知道這個入口主類就是 Application ,它訂閱並處理 WP 應用程序的生命周期事件,並定義系統資源。
   而這些頁面控件就是 Silverlight for Windows phone 應用程序中的 PhoneApplicationPage 。它定義了一個一個的頁面外觀。
   有了這個基礎,我們來看 Cocos2D ,我們發現它們的情形驚人的一致: CCApplication 作為應用程序的入口,負責調控引擎的整個生命周期。而 PhoneApplicationPage 則對應 cocos2d 中的 CCScene ,是的,正如 Wp 應用程序每時每刻會顯示一個頁面一樣, cocos2d 每時每刻會顯示一個 CCScene  
 
   其實這也不奇怪,圖形應用程序大多是這樣的思路,只不過游戲輪詢的模式更適應於游戲頻繁的邏輯和狀態更新,而事件的模式適應於開發用戶輸入驅動的應用程序。
   所以,在 cocos2d 中, CCApplication 主要做三件事情:
            1.     控制應用程序的生命周期
            2.     提供和管理 一些全局的資源
     3. 處理Touch
     4. 循環繪制界面
 
   應用程序的生命周期有一下幾個虛方法:
      ///   <summary>
       ///  可以做一些簡單全局變量的初始化工作,在DrawableGameComponent的Initialize方法中調用
       ///   </summary>
      public  override  bool initInstance();
 
        ///   <summary>
       ///   資源加載完成之后發生,在DrawableGameComponent的LoadContent方法末尾中調用
       ///   </summary>
      public  override  bool applicationDidFinishLaunching()
  
      ///   <summary>
      ///  程序進入后台被掛起
     ///   </summary>
      public  override  void applicationDidEnterBackground()
     ///   <summary>
      ///  程序從后台被喚醒 
      ///   </summary>
      public  override  void applicationWillEnterForeground()
 
      這和Silverlight for Windows phone總的應用程序生命周期是類似的,不過注意的是目前的cocos2d-x for XNA中並沒有加入掛起和喚醒的方法調用,不過很簡單,你可以在Game1類的OnActivated和OnDeactivated中調用它們,下個版本修正這個問題。
 
另一個比較重要的變化是, CCApplication 增加了一些 XNA 繪制相關的全局屬性,包括:
     1.    ContentManager :用於管理資源的加載。
    2.     SpriteBatch :用於繪制 2D 的紋理。
    3.     WorldMatrix :當前着色器的世界矩陣。
    4.     ViewMatrix :當前着色器的視圖矩陣。
    5.    ProjectionMatrix :當前着色器的投影矩陣。
    6.    basicEffect :用來繪制元素的着色器。
   這些屬性主要用於繪制,它們會被 CCSprite CCSpriteBatchNode 以及 CCTextureAtlas 等與繪制相關的類使用。如果你的游戲中需要自己繪制 2D 或者 3D 的元素,也可以直接調用這些屬性進行繪制。

     第三個就是處理Touch事件,我們可以看到Update方法中就只有一個處理Touch的方法。實際上處理的是上一幀的Touch事件。
     第四個就是繪制界面,Draw做兩件有意義的事情:
        1. 重置攝像機位置和坐標。(其實這里也不是必須每幀都這么做,因為后面我們看到CCNode的時候就會知道,每幀繪制完畢實際上會將這些矩陣變換還原,后續可以做一些優化)。
        2. 進入CCDirector的mainLoop循環。
 
        CCDirector的mainLoop就是整個游戲的繪制過程了,我們以后會慢慢分析。
        現在,你明白CCApplication了嗎?歡迎討論。
 
         轉載自: www.0x003f.com
      
     歡迎加入QQ群:190784175(cocos2d-x for XNA開源社區), 由cocos2d-x for XNA開發團隊創建


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM