您好,登錄后才能下訂單哦!
寫在前面——有不對的地方,煩請大家批評指正,我也會繼續努力提高自己。如果轉載請注明出處,謝謝大家支持——Forward。
我的微博——秦京一夢
從這一篇,我們開始對Cocos2dx做一個基礎系列的學習。
使用Cocos2dx進行游戲開發,Forward個人感覺就如同畫畫一樣。一幅畫要展現出來,就必須有至少一個載體,同樣的,游戲中一個場景就是我們的一個載體。那么所謂的場景又是什么呢?帶著這個問題,我們開始進入今天的主題——場景CCScene。
在之前的博客中Forward有提到過,按照自己的學習方法,在深入學習某一的新的知識點之前,總是要對整體上先做一個認識,這樣對后期的學習會有很大的幫助。好的,為了有這樣一個整體的認識,我們先來看看自上而下有關場景類CCScene的一個類結構。
圖 1
上圖1中,我們可以看出,CCScene是繼承自CCLayer,而CCLayer則是由CCObject繼承而來。同時由于CCLayer本身繼承自CCTouchDelegate類,使其能夠處理Touch事件。這樣,就保證了CCScene能夠在做游戲基本載體的基礎上完成游戲過程中交互所必需的Touch事件的捕獲與處理了。
那么Cocos2dx游戲開發中是如何使用CCScene的呢?
首先我們創建一個Cocos2dx工程,配置路徑使之可以運行(Forward這里創建了一個SceneLayer工程),我們從程序的入口main文件看起。
AppDelegate app;
CCEGLView* eglView =CCEGLView::sharedOpenGLView();
eglView->setFrameSize(480,320);
intret = CCApplication::sharedApplication()->run();
這里我們注意到,程序一啟動就定義了一個AppDelegate對象。然后調用AppDelegate的run來運行。
在AppDelegate的run函數中做了什么呢?
if(!applicationDidFinishLaunching())
{
return0;
}
可能初學者會感覺比較繞,但是仔細看就會明白。SceneLayer工程中自定義了一個HelloWorld類,它是由CCLayer繼承而來。并通過類內部的一個內部的靜態變量CCScene作為游戲的主要載體來加載包括HelloWorld本身這個層以及其他游戲中的元素的。
我們進入AppDelegate.cpp中,就會發現,原來主場景的創建就在applicationDidFinishLaunching中。
CCScene *pScene =HelloWorld::scene();
// run
pDirector->runWithScene(pScene);
這樣就將一個場景CCScene載體創建出來了。(由于個人表達能力有限,或許在描述的過程中不夠詳細,希望大家能夠去讀源代碼,可能會感覺更加清晰易懂)。
明白了這一點。我們也依樣畫葫蘆,創建一個自己的場景TranslateScene出來。(為求簡便,Forward只是對HelloWorld類進行復制簡單修改并加入工程)。
創建這個場景用來做什么呢?其實這個例子的想法很簡單,就是通過點擊從一個場景切換到另外一個場景上去。這個過程中,Forward會選擇使用Cocos2dx中現有的一些場景切換特效來完成,希望通過這一個例子對場景的切換一些特效做一些簡單學習。
在這個例子中,我們主要使用的到的類如下(見圖2)。
圖 2
這里我們看到的CCTransition及文件內部的一些類,主要是與場景切換特效相關的一些使用類。如CCTransitionRotoZoom、CCTransitionJumpZoom等等。具體的API可以參考源代碼,Forward在這里就不做贅述了。
進入HelloWord的關閉按鈕回調函數,我們做如下修改。
CCScene*pTScene = TranslateScene::scene();
CCTransitionRotoZoom*pTranslateScene = CCTransitionRotoZoom::create(3.0f,pTScene);
CCDirector::sharedDirector()->replaceScene(pTranslateScene);
這里我們首先創建了一個前面自定義的一個類TranslateScene對象,然后通過CCTransitionRotoZoom類來完成場景的跳轉(當然,我們需要包含對應頭文件)。
看看執行結果來一個感性認識吧。直接運行程序——
圖 3
點擊右下角按鈕,進行場景切換——
圖 4
我們看到場景上的圖片邊旋轉變縮小,知道看不見,然后TranlateScene場景顯示的信息邊旋轉邊放大直到剛好填充View窗口——
圖 5
好的,今晚的基礎學習就先到這吧。是不是很簡單啊。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。