coco2d-x面試題_第1頁
coco2d-x面試題_第2頁
coco2d-x面試題_第3頁
coco2d-x面試題_第4頁
coco2d-x面試題_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、Cocos2d-x面試題(無腦碼農(nóng))1,闡述 cocos2d-x 中 CCScene CCLayer CCSprite CCNode斗gwr J-i. A 舛 i -Jip<fer ccct'J2z sc-sns j邛,吟 遭 j n m" W。.帕/E mx陋 匕 盅-b” p 三峭 即。 解接* utn.皿射而irw” 國 jw聞 fJw 即 制 & KKU 仲The CCNode Class HierarchyAl口鼻小鼻 Mfnrrgni 口工工 dug 1gs i whch a lot ythe UEEFaroper 簿 ana 2門小,excepi

2、ng todsslhs rwie. f gyre 3-2 sno*s tn most nqartan* claasas dented *rem C£.Nede. These sfa the or>es youf! I vB«ir4 軾HTi most cr*?sr ahH you Ed" act ja v rrake qung iniExess; gani-h A-itlh jueI Ujcsw =三上MrfcenePkyer 印 rif eScgreQbeleMenuPhverWeipcnSprilePaLi»Mtnuktem OptioniMt

3、nultemCCSceneCCScene是app工作流程上獨立塊,一個 app可能擁有多個scene ,但是在任何時候只能有 一個是激活狀態(tài)的。一個 CCScene對象由一個或多個 CCLayer組成,layer之間是前后相連 的。Layer提供了 scene的外觀和行為。通常的用法是直接用一個或多個layer實例化一個sceneCCScene勺子類CCTrasitionScene 實現(xiàn)移動transitions ,提供兩個scene之間的轉(zhuǎn)移效果, 由于scene是CCNode的子類,所以scene可以手工或者用 aciton來轉(zhuǎn)變坐標。所有層和精 靈都是他的(子節(jié)點) children 。

4、CCScene的4個基本方法:runWithScene (運行畫面),replaceScene (替換場景例如從主菜單進入游戲界面),pushScene (暫停界面),popScene (從暫停的界面還原到游戲界面)Layers :CCLayer同樣是CCNode勺子類,通常用 addChild方法添加子節(jié)點。CCLayer對象定義了可描繪的區(qū)域,定義了描繪的規(guī)則。CCLayer可以實現(xiàn)半透明的效果,層的事件相應機制:最外層最先接受到事件(屏幕觸碰),最后是底層,如果在 某層處理了該事件,則后面的層不會在接受到事件信號Spritescocos2d的sprite 對象就是一個可以移動、選擇、伸縮

5、、動畫的2d圖形,CCSprite 對象的子成員中可以包含其它的 CCSprite對象。當CCSprite對象轉(zhuǎn)換坐標系 的時候,它所包含的CCSprite對象也會轉(zhuǎn)換轉(zhuǎn)換坐標系。sprites 是CCNode的 子類,所以他們也可以使用actions來轉(zhuǎn)換坐標.See Actions for more detail about actions.它是一個抽象類,沒有可視化表示形CCNod懇場景、層、菜單、精靈等所有節(jié)點的父類,式,定義了所有node共有的屬性和方法。2,說一下 CCAction 和 CCActionMessagerCCAction是動作的基類,主要使用CCFiniteTimeA

6、ction有限次動作執(zhí)行,就是 按時間順序執(zhí)行一系列動作,執(zhí)行完后動作結(jié)束;CCFiniteTimeAction 又分為 CCActionInstanse (瞬時動作的基類)和 CCActionInterval(延時動作的基類)。CCActionInstanse :沒什么特別,跟CCActionInterval 主要區(qū)別是沒有執(zhí)行過程,動作瞬間就執(zhí)行完成了 ; CCActionInterval :執(zhí)行需要一定的時間(或者說一個過程)。我們用的最多的 就是延時動作,下面對它進行單獨介紹。CCActionMessage是管理所有Action的單例,一般情況下并不直接使用這個單 例,而是使用CCNo

7、de勺接口,但是假如你想操作的目標不是 CCNode勺子類或者 你想暫停/恢復行動就要使用到CCActionMessager3,你常用的cocos2d-x工具TiledMap (地圖編輯器)ParticleEditor(粒子編輯器)cocosBuilder(可視化編輯)Texture Packer(圖片組合工具)等4,簡述:CCDirector CCEGLView CCEGLViewProtocolCCDirector是singleton 模式的共享的對象。它知道當前哪個scene是激活。CCDirector以stack的方式處理scenes的調(diào)用(當另一個 scene進入的時候,暫停當前的

8、scene ,完 成之后再返回原來的 scene ), CCDirector 負責更換 CCScene,在CCLayer被push的時候, 更換或結(jié)束當前的 scene。另外:CCDirector 負責初始化OpenGL ES 作用: 1.訪問和改變場景 2.訪問cocos2d的配置細節(jié)3 .訪問視圖,(openGL, UIView, UIWindow )4 .暫停,恢復和結(jié)束游戲5 .在UIKit和OpenG民間轉(zhuǎn)換坐標CCEGLView CCEGLViewProtocol的子類,是用于屏幕適配(這個問題還沒全解決啊)5,簡述 CCSpriteframeCache CCSpriteBatch

9、Node ,并說出CCNode CCSprite是如何實現(xiàn)繪制的CCSpriteFrameCache緩存了所有CCSpriteFrame. 可以一下方式獲取特定 frame并設(shè)定給Sprite. 前提是文件已經(jīng)緩存CCSpriteBatchNode 中的所有 CCSprite只會被渲染1次,因此可以提高游戲的 FPS 限制:加入到 CCSpriteBatchNode 中的CCSprite必須使用同一張紋理圖。比如游戲中的子彈就很適合用它,因為子彈都是一個樣子。通過 TexturePacker生成的紋 理圖也適合使用它。(第二問不會)6 , cocos2d-x的屏幕適配解決方案之后pEGLVie

10、w->setDesignResolutionSize(480, 320, kResolutionNoBorder); 第三 個參數(shù),找到定義:講得很清楚了:kResolutionExactFit :會靠拉伸來填滿屏幕,本例來說背景圖會變形來填充屏 幕,因為1024:768=, 480:320=,寬高比不同,圖片也就無法等比縮放來填滿屏 幕,只能變形了。kResolutionNoBorder :看不到黑邊,實際就是寬高等比縮放,但縮放比例取寬 比和高比之中大的那一個。kResolutionShowAll :全部顯示,可以理解為保證內(nèi)容都顯示在屏幕之內(nèi),實際也是寬高等比縮放,但縮放比例取寬比

11、和高比之中小的那一個。一般來說,我們希望設(shè)計時一屏的內(nèi)容,用戶在實際設(shè)備上也能在一屏內(nèi)看 到,拿本例來說,1024x76盼辨率時,右下角的按鈕卻跑到屏幕外去了。看完上 面的分析,你應該知道如何解決了: 對了,改變 pEGLView->setDesignResolutionSize(480, 320, kResolutionNoBorder); 第三 個參數(shù)為 kResolutionShowAll 。7 , cocos2d-x聊天的實現(xiàn),對話框 字符集 字體描邊 輸入法8,cocos2d-x 游戲儲存CCUserDefault 和 SQListCCUserDefalt存在的的問題1 .沒有

12、記錄和表的概念你會發(fā)現(xiàn),如果要設(shè)置多存檔,必須自己操作,而且代碼會變得復雜,容易出錯。 對于簡單的游戲可以使用 CCUserDefalt ,但是對于復雜游戲,可以考慮使用 SQLite。2 .沒有數(shù)據(jù)類型安全比如,如果你錯寫把一個Integer按Bool讀取,是沒有錯誤提示的3 .沒有存檔數(shù)據(jù)完整性的校驗我們找到之前的存檔記錄, 用CCUserDefault: getXMLFilePath ()可以獲得存檔 位置,打開它9, cocos2d-x內(nèi)存管理cocos2d-x最初移植自cocos2d的objective C 版本。因此,在內(nèi)存管理上, 使用了和NSObject類似的引用計數(shù)器方法,相

13、關(guān)接口放置在 CCObject類中c引用計數(shù)器一一手動管理內(nèi)存CCObject的及其子類的對象在創(chuàng)建時,引用計數(shù)自動設(shè)置為1。之后每次調(diào)用retain ,引用計數(shù)+1。每次調(diào)用release ,引用計數(shù)-1 ;若引用計數(shù)=0, 則直接 delete this 。retain是在指針傳遞和賦值時使用的,他的含義是表示擁有。這經(jīng)常用在指 針賦值上。自動釋放池一一自動管理內(nèi)存對于使用autorelease 的對象,不必管它,每幀結(jié)束后會自動釋放。CCNodef點管理cocos2d-x使用節(jié)點組成一棵樹,渲染的時候要遍歷這棵樹。CCNode!所有節(jié)點類的父類,他內(nèi)部使用了一個 CCArray對象管理他的所有子節(jié)點,當對 象被添加為子節(jié)點時,實際上是被添加到CCArray對象中,同時會調(diào)用這個對象的retain 方法。同理,從 CCArray中移除時,也會調(diào)用 release方法。靜態(tài)工廠cocos2d-x中存在大量的靜態(tài)工廠方法,這些方法中,全都對

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論