国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

拇指接龍游戲升級記錄03(升級MainScene.cpp)

2019-11-11 03:08:25
字體:
來源:轉載
供稿:網友

MainScene是拇指接龍游戲的主游戲場景文件,擁有近5000行代碼。

說實在的,實現自cocos2d-x 2.x版本向當下最新的3.8.1版本的升級過程,其中涉及的技術不是一下能夠說明的。有些是形式上的簡單修改,更多的則是性能上的提升相應的修改。

 

簡單總結一下主場景文件MainScene的升級工作。主要集中在如下幾個方面:

 

1.撲克拖動相關事件的升級修改:

這一點在網絡上已經有不少細致的資料,在此不贅述,請參考后面的引文。

如今的手指移動事件操作起來要比2.x時期簡化多了。

 

2. CCArray向Vector<T>數據結構的升級,基本感覺比較流暢,沒有大的障礙。

但是,僅有一點需要特別注意:在CCArray時代,removeLastObject(false)一句在Vector<T>下沒有直接的對應。

removeLastObject(false)一句的意思是從數組中刪除相應結點,但是內存中對應數據結構繼續保留。那么在Vector<T>下如何實現的?

我的辦法大致如下,請興趣的朋友可以參考:

 

OLD:

 

123456789101112131415    Cells[col]= (Card*)TableauPiles[whichColumnForCC]->lastObject();     Card* t2=Cells[col];     Cells[col]->setPosition(m_pCurNode->getChildByTag(10006+col)->getPosition());     m_pCurNode->reorderChild(Cells[col],++zIndexForAll);     Cells[col]->setPosition(m_pCurNode->getChildByTag(10006+col)->getPosition());     m_pCurNode->reorderChild(Cells[col],++zIndexForAll);      //從原來位置清除撲克,但是并沒有釋放內存;否則,存在野指針!!!//      TableauPiles[whichColumnForCC]->removeLastObject(false);//9-11

 

NEW:

1234567891011121314151617181920212223      Card* tmpCard = TableauPiles[whichColumnForCC].back();      Card* card_2015 = new Card();      card_2015->setCurrentSuit(tmpCard->getCurrentSuit());      card_2015->setNumber(tmpCard->getNumber());      card_2015->loadTexture(tmpCard->getCurrentSuit());      card_2015->setPosition(m_pCurNode->getChildByTag(10006 + col)->getPosition());      Cells[col] = card_2015;      Card* t2=Cells[col];      m_pCurNode->reorderChild(t2, ++zIndexForAll);      //從原來位置清除撲克      //TableauPiles[whichColumnForCC]->removeLastObject(false);//modified on 9-11      TableauPiles[whichColumnForCC].popBack();

 3.這個一個較大的坑,其實關鍵還是在于我對于3.x版本的API沒有全面分析所致。例如,我在感覺部分修改結束后,編譯時遇到如下所示錯誤:

wKiom1ZEj1uBdXc3AAJLFuBgdXs341.jpg

 

雙擊上述任何一個錯誤,光標停留到functional文件中,而此文件是vc2013的一個標準頭文件。從上面幾乎任何一個錯誤提示在網絡中搜索,幾乎沒有任何線索,至少到目前為止,我搜索到的幾乎都是風馬牛不相及的。

 

因為,這個文件太長,而此前我的2.x版本順利調試通過。結合上面提供的僅有的線索(即括號中的文件mainscene.cpp)。我斷定肯定是MainScene.cpp升級過程中,由于部分結合VS2013查找替換修改,可能導致部分錯誤,而且這種錯誤很可能與C++ 11新特性相關(從C++ 11知識及上面大量出現的模板形式可以斷定)。

 

無奈之下,我硬著頭皮決心一點點把上述文件完全升級到3.x表達方式。在沒有徹底弄明白是哪些地方出現上述問題的情況下,升級結束,上述錯誤在重新編譯后完全消失。

 

而此前,我有好幾個小時悄悄地消失了......

 

其實的沒有大問題了,結論是:如果立足于cocos2d-x c++開發的話,STL和C++ 11特性是必修課!

登錄樂搏學院官網http://www.learnbo.com/

或關注我們的官方微博微信,還有更多驚喜哦~

本文出自 “青峰” 博客,請務必保留此出處http://zhuxianzhong.blog.51cto.com/157061/1712313


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 秭归县| 高平市| 崇明县| 衡阳县| 太和县| 东源县| 乐山市| 乌鲁木齐县| 宕昌县| 雷波县| 张北县| 呈贡县| 当涂县| 南涧| 安化县| 涞水县| 敦煌市| 偃师市| 荣昌县| 尼木县| 若羌县| 大名县| 武邑县| 泾阳县| 新营市| 苏州市| 德钦县| 汨罗市| 来安县| 江口县| 长岛县| 共和县| 漳平市| 开化县| 德格县| 新竹市| 浦东新区| 抚松县| 晋江市| 射阳县| 余干县|