Cocos2D-x for XNA類解析(1): CCApplication
轉自:http://www.cnblogs.com/hielvis/archive/2012/06/04/2534672.html
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:用來繪製元素的著色器。
第三個就是處理Touch事件,我們可以看到Update方法中就只有一個處理Touch的方法。實際上處理的是上一幀的Touch事件。
這些屬性主要用於繪製,它們會被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開發團隊建立
相關文章
- 1.物件和類的簡單解析物件
- 《XNA高階程式設計:Xbox 360和Windows》前言程式設計Windows
- cocos2d-x之OpenGL概述
- StringBuilder類用法解析UI
- [轉]Cocos2d-x下Lua呼叫自定義C++類和函式的最佳實踐C++函式
- webpack解析(1)Web
- DEX檔案解析--7、類及其類資料解析(完結篇)
- Smali 語法解析 —— 類
- Java JUC ThreadLocalRandom類解析Javathreadrandom
- Mysql三類log解析MySql
- Python_類全面解析Python
- Cocos2d-x環境配置步驟
- 1-類
- [原始碼解析]PyTorch如何實現前向傳播(1) --- 基礎類(上)原始碼PyTorch
- EOL 筆記:核心類解析筆記
- Android開發 - DialogFragment 類解析AndroidFragment
- Android開發 - BrowseFragment 類解析AndroidFragment
- 1、ArrayList原始碼解析原始碼
- Python 列舉類原始碼解析Python原始碼
- answerOpenCV輪廓類問題解析OpenCV
- CAS原子類:AtomicLongArray原始碼解析原始碼
- 解析 SQL 的 java 類庫 jsqlparserSQLJavaJS
- 【JVM】深入解析class類檔案JVM
- cocos2d-x中新增TV按鍵響應
- Java 集合類——Collections(1)Java
- 常用類process1
- cocos2d-x本地化/多語言適配
- AFNetworking原始碼解析系列(1)原始碼
- dubbo原始碼解析之ExtensionLoader類(二)原始碼
- mach-o 檔案分析(解析類)Mac
- muduo原始碼解析11-logger類原始碼
- 【Spring】【03】解析配置類註冊BeanDefinationSpringBean
- 死磕 java魔法類之Unsafe解析Java
- Java 併發包原子操作類解析Java
- Cocos2d-x 中獲取動畫當前幀數動畫
- React原始碼解析(1):jsx語法是如何解析React原始碼JS
- java 常用類-String-1Java
- Mybatis N+1問題解析MyBatis
- Promise-Polyfill原始碼解析(1)Promise原始碼