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

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

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

2019-11-11 04:42:49
字體:
來源:轉載
供稿:網友

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


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 湘阴县| 灌阳县| 垫江县| 延庆县| 阆中市| 福鼎市| 富阳市| 阳泉市| 长葛市| 古交市| 萝北县| 万安县| 铁力市| 石渠县| 呼和浩特市| 大化| 霍林郭勒市| 麻城市| 丽江市| 临夏县| 修武县| 监利县| 平定县| 林口县| 阿瓦提县| 易门县| 黎平县| 墨竹工卡县| 岫岩| 桃源县| 宁远县| 康保县| 呼玛县| 彰化县| 栾川县| 北京市| 商洛市| 毕节市| 京山县| 巨野县| 黄大仙区|