91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

【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

寿光市| 开化县| 宜宾县| 合江县| 仙居县| 商丘市| 宁国市| 南木林县| 龙里县| 航空| 温州市| 屏边| 安徽省| 铁力市| 宣威市| 行唐县| 太康县| 平阴县| 贵州省| 布尔津县| 桓仁| 临沭县| 措勤县| 丹巴县| 沂源县| 霍邱县| 汤原县| 慈溪市| 明水县| 托克逊县| 吴江市| 芒康县| 尉氏县| 宜都市| 石棉县| 吉林省| 绥江县| 潍坊市| 大同县| 桃江县| 克拉玛依市|