中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

【Cocos2dx開發】場景

發布時間:2020-07-18 18:40:08 來源:網絡 閱讀:675 作者:龍顏碩 欄目:開發技術

Cocos2dx開發】場景

寫在前面——有不對的地方,煩請大家批評指正,我也會繼續努力提高自己。如果轉載請注明出處,謝謝大家支持——Forward

我的微博——秦京一夢

從這一篇,我們開始對Cocos2dx做一個基礎系列的學習。

使用Cocos2dx進行游戲開發,Forward個人感覺就如同畫畫一樣。一幅畫要展現出來,就必須有至少一個載體,同樣的,游戲中一個場景就是我們的一個載體。那么所謂的場景又是什么呢?帶著這個問題,我們開始進入今天的主題——場景CCScene

在之前的博客中Forward有提到過,按照自己的學習方法,在深入學習某一的新的知識點之前,總是要對整體上先做一個認識,這樣對后期的學習會有很大的幫助。好的,為了有這樣一個整體的認識,我們先來看看自上而下有關場景類CCScene的一個類結構。

【Cocos2dx開發】場景

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對象。然后調用AppDelegaterun來運行。

AppDelegaterun函數中做了什么呢?

   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)。

【Cocos2dx開發】場景

2

   這里我們看到的CCTransition及文件內部的一些類,主要是與場景切換特效相關的一些使用類。如CCTransitionRotoZoomCCTransitionJumpZoom等等。具體的API可以參考源代碼,Forward在這里就不做贅述了。

進入HelloWord的關閉按鈕回調函數,我們做如下修改。

   CCScene*pTScene = TranslateScene::scene();

   CCTransitionRotoZoom*pTranslateScene = CCTransitionRotoZoom::create(3.0f,pTScene);

   CCDirector::sharedDirector()->replaceScene(pTranslateScene);

   這里我們首先創建了一個前面自定義的一個類TranslateScene對象,然后通過CCTransitionRotoZoom類來完成場景的跳轉(當然,我們需要包含對應頭文件)。

   看看執行結果來一個感性認識吧。直接運行程序——

【Cocos2dx開發】場景

3

   點擊右下角按鈕,進行場景切換——

【Cocos2dx開發】場景

4

   我們看到場景上的圖片邊旋轉變縮小,知道看不見,然后TranlateScene場景顯示的信息邊旋轉邊放大直到剛好填充View窗口——

【Cocos2dx開發】場景

5

   好的,今晚的基礎學習就先到這吧。是不是很簡單啊。


向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

紫阳县| 罗山县| 河南省| 横峰县| 潍坊市| 卫辉市| 连城县| 邢台县| 德令哈市| 松滋市| 图们市| 景东| 北票市| 邛崃市| 阿瓦提县| 甘南县| 民权县| 桂林市| 沧州市| 太康县| 惠东县| 神木县| 都兰县| 城口县| 天等县| 德兴市| 漳浦县| 灌云县| 怀安县| 亚东县| 肇庆市| 饶阳县| 青海省| 招远市| 沙河市| 凤凰县| 武邑县| 永修县| 昭通市| 循化| 鄂伦春自治旗|