寫在前面——有不對的地方,煩請大家批評指正,我也會繼續(xù)努力提高自己。如果轉(zhuǎn)載請注明出處,謝謝大家支持——Forward。
成都創(chuàng)新互聯(lián)專注于海淀網(wǎng)站建設(shè)服務(wù)及定制,我們擁有豐富的企業(yè)做網(wǎng)站經(jīng)驗(yàn)。 熱誠為您提供海淀營銷型網(wǎng)站建設(shè),海淀網(wǎng)站制作、海淀網(wǎng)頁設(shè)計(jì)、海淀網(wǎng)站官網(wǎng)定制、小程序開發(fā)服務(wù),打造海淀網(wǎng)絡(luò)公司原創(chuàng)品牌,更為您提供海淀網(wǎng)站排名全網(wǎng)營銷落地服務(wù)。我的微博——秦京一夢
從這一篇,我們開始對Cocos2dx做一個基礎(chǔ)系列的學(xué)習(xí)。
使用Cocos2dx進(jìn)行游戲開發(fā),F(xiàn)orward個人感覺就如同畫畫一樣。一幅畫要展現(xiàn)出來,就必須有至少一個載體,同樣的,游戲中一個場景就是我們的一個載體。那么所謂的場景又是什么呢?帶著這個問題,我們開始進(jìn)入今天的主題——場景CCScene。
在之前的博客中Forward有提到過,按照自己的學(xué)習(xí)方法,在深入學(xué)習(xí)某一的新的知識點(diǎn)之前,總是要對整體上先做一個認(rèn)識,這樣對后期的學(xué)習(xí)會有很大的幫助。好的,為了有這樣一個整體的認(rèn)識,我們先來看看自上而下有關(guān)場景類CCScene的一個類結(jié)構(gòu)。
圖 1
上圖1中,我們可以看出,CCScene是繼承自CCLayer,而CCLayer則是由CCObject繼承而來。同時(shí)由于CCLayer本身繼承自CCTouchDelegate類,使其能夠處理Touch事件。這樣,就保證了CCScene能夠在做游戲基本載體的基礎(chǔ)上完成游戲過程中交互所必需的Touch事件的捕獲與處理了。
那么Cocos2dx游戲開發(fā)中是如何使用CCScene的呢?
首先我們創(chuàng)建一個Cocos2dx工程,配置路徑使之可以運(yùn)行(Forward這里創(chuàng)建了一個SceneLayer工程),我們從程序的入口main文件看起。
AppDelegate app;
CCEGLView* eglView =CCEGLView::sharedOpenGLView();
eglView->setFrameSize(480,320);
intret = CCApplication::sharedApplication()->run();
這里我們注意到,程序一啟動就定義了一個AppDelegate對象。然后調(diào)用AppDelegate的run來運(yùn)行。
在AppDelegate的run函數(shù)中做了什么呢?
if(!applicationDidFinishLaunching())
{
return0;
}
可能初學(xué)者會感覺比較繞,但是仔細(xì)看就會明白。SceneLayer工程中自定義了一個HelloWorld類,它是由CCLayer繼承而來。并通過類內(nèi)部的一個內(nèi)部的靜態(tài)變量CCScene作為游戲的主要載體來加載包括HelloWorld本身這個層以及其他游戲中的元素的。
我們進(jìn)入AppDelegate.cpp中,就會發(fā)現(xiàn),原來主場景的創(chuàng)建就在applicationDidFinishLaunching中。
CCScene *pScene =HelloWorld::scene();
// run
pDirector->runWithScene(pScene);
這樣就將一個場景CCScene載體創(chuàng)建出來了。(由于個人表達(dá)能力有限,或許在描述的過程中不夠詳細(xì),希望大家能夠去讀源代碼,可能會感覺更加清晰易懂)。
明白了這一點(diǎn)。我們也依樣畫葫蘆,創(chuàng)建一個自己的場景TranslateScene出來。(為求簡便,F(xiàn)orward只是對HelloWorld類進(jìn)行復(fù)制簡單修改并加入工程)。
創(chuàng)建這個場景用來做什么呢?其實(shí)這個例子的想法很簡單,就是通過點(diǎn)擊從一個場景切換到另外一個場景上去。這個過程中,F(xiàn)orward會選擇使用Cocos2dx中現(xiàn)有的一些場景切換特效來完成,希望通過這一個例子對場景的切換一些特效做一些簡單學(xué)習(xí)。
在這個例子中,我們主要使用的到的類如下(見圖2)。
圖 2
這里我們看到的CCTransition及文件內(nèi)部的一些類,主要是與場景切換特效相關(guān)的一些使用類。如CCTransitionRotoZoom、CCTransitionJumpZoom等等。具體的API可以參考源代碼,F(xiàn)orward在這里就不做贅述了。
進(jìn)入HelloWord的關(guān)閉按鈕回調(diào)函數(shù),我們做如下修改。
CCScene*pTScene = TranslateScene::scene();
CCTransitionRotoZoom*pTranslateScene = CCTransitionRotoZoom::create(3.0f,pTScene);
CCDirector::sharedDirector()->replaceScene(pTranslateScene);
這里我們首先創(chuàng)建了一個前面自定義的一個類TranslateScene對象,然后通過CCTransitionRotoZoom類來完成場景的跳轉(zhuǎn)(當(dāng)然,我們需要包含對應(yīng)頭文件)。
看看執(zhí)行結(jié)果來一個感性認(rèn)識吧。直接運(yùn)行程序——
圖 3
點(diǎn)擊右下角按鈕,進(jìn)行場景切換——
圖 4
我們看到場景上的圖片邊旋轉(zhuǎn)變縮小,知道看不見,然后TranlateScene場景顯示的信息邊旋轉(zhuǎn)邊放大直到剛好填充View窗口——
圖 5
好的,今晚的基礎(chǔ)學(xué)習(xí)就先到這吧。是不是很簡單啊。
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)scvps.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。