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開發團隊建立
相關文章
- Learning Cocos2d-x for XNA(1)——小窺cocos2d-x框架框架
- Cocos2D-X for XNA遊戲開發指南遊戲開發
- XNA FrameworkFramework
- 1.物件和類的簡單解析物件
- Cocos2d-x下Lua呼叫自定義C++類C++
- 類管理解析
- Cocos2d-xna : 橫版戰略遊戲開發實驗1 開篇遊戲開發
- Cocos2D-XNA入門篇
- 加入網路API 微軟宣佈XNA 2.0API微軟
- webpack解析(1)Web
- DEX檔案解析--7、類及其類資料解析(完結篇)
- Mysql三類log解析MySql
- Smali 語法解析 —— 類
- 1-類
- Cocos與Cocos2d-x協作教程——多解析度適配
- Kafka深度解析(1)Kafka
- Java JUC ThreadLocalRandom類解析Javathreadrandom
- Python_類全面解析Python
- StringBuilder類用法解析UI
- Lucene原始碼解析--Field類原始碼
- EOL 筆記:核心類解析筆記
- XNA開發一個2D的小遊戲遊戲
- 簡單XNA_Windows Phone 7 3D動畫Windows3D動畫
- [原始碼解析]PyTorch如何實現前向傳播(1) --- 基礎類(上)原始碼PyTorch
- 1、ArrayList原始碼解析原始碼
- underscore原始碼解析1原始碼
- iOS核心動畫解析1iOS動畫
- 《XNA高階程式設計:Xbox 360和Windows》前言程式設計Windows
- 【JVM】深入解析class類檔案JVM
- answerOpenCV輪廓類問題解析OpenCV
- Java類載入原理解析Java
- 一個CSV檔案解析類
- Java集合類:AbstractCollection原始碼解析Java原始碼
- Android開發 - BrowseFragment 類解析AndroidFragment
- 【Cocos2d-x】整合wxSqlite3到Cocos2d-xSQLite
- python:類1——類和物件基礎Python物件
- javascript物件導向包裝類Class的類庫解析JavaScript物件
- Java 集合類——Collections(1)Java