CocosBuilder 使用技巧
本文主要側重于CocosBuilder在cocos2dx中的集成。對CocosBuilder使用的介紹比較簡單。詳細的使用請參考官方教程;
CocosBuilder部分
1)創建工程
首先創建Cocos2dx工程“ShootTheApple”,然后在其Resources目錄下新建ccb,并在ccb中創建CocosBuilder工程。目錄結構如下圖:
CocosBuilder工程會產生3類文件,后綴分別為ccbproj, ccb, ccbi(其中前兩個文件使工程文件--ccb.ccbproj, apple.ccb。 ? ? ?ccbi文件,是導出的文件,被cocos2dx程序使用,如上圖的apple.ccbi);
2)配置cocosBuilder屬性
點擊菜單File/Publish Setting..., 彈出如下對話框:按上圖進行配置,其中最為重要的是選擇導出ccbi的目錄,這里將設置為cocos2dx的Resources目錄,就是cocosBuilder的上級目錄。然后勾選最后的“Flatten paths when publishing”和“Only publish ccb-files”選項。
觀察ccb/Resources目錄,其中有個ccbResources文件,這里面放ccb使用的圖片等資源。在ccb發布成ccbi后,我們還需要把此ccbResources拷貝到cocos2dx的resources目錄下,這樣ccbi才可以正確的讀取。
3)創建ccb文件。
菜單File/New/New File..., 彈出如下的對話框:這里可以創建4類Object,CCLayer, CCNode, CCParticleSystemQuad和CCSprite;這里還可以選擇游戲運行的device的類型,保持默認,點擊create后,給定名稱(這里為MainScene.ccb),選擇ccb/Resources為其根目錄,就生成了一個ccb文件。操作界面如下圖:
點擊界面下方時間軸中的物體,其構成了樹狀結構(這個正是cocos2dx中對CCNode的構成結構);選擇其中一項,比如CCLayer,其右方將顯示其相關屬性。比如Position, ContentSize,AnchorPoint等信息。當cocosBuilder生成ccbi的時候,將導出這些信息(文件為二進制形式,其中還包含動畫信息和回調函數的信息;動畫信息在操作界面的下方定義)。cocos2dx在載入這個ccbi文件的時候,將調用相關解析器(CCBReader)來解析這個文件,生成相應的cocos2dx對象,然后呈現出來,并播放相應的動畫。
4)編輯ccb文件--按鈕
在cocosBuilder的編輯,都是“可見即可得”的。cocosBuilder兼容SpriteSheet(可以使用TexturePacker進行編輯),編輯的時候,直接把圖片拖動到模擬器就可以了。創建按鈕有兩種方式(和cocos2dx中一樣),這里只介紹使用Menu的方式。先創建Menu,點擊工具欄中的Menu按鈕(左邊),如下圖:
在當前的Menu中,然后點擊Menu按鈕的右邊5下,就創建了5個MenuItem。類的層次結構,可以在時間軸邊上看到。如下圖:
創建的按鈕如下圖:
這時需要在右側的設置屬性,如下圖:
設置事件響應函數的名稱(如btnPlay,target為Document root);并設置CCMenuItem在三種不同情況下的呈現的圖片。完成的按鈕如下:
配置完5個按鈕,調整位置和縮放等,如下:
4)編輯ccb文件--動畫
這里將運用cocosBuilder來制作背景中的一個閃爍的星星,具體使用的是Rotate和Scale動畫。 將一顆星星拖入到模擬器中,并移動到右上角,如下圖: 選中這個物體,先縮放其為0.1f; 然后在事件軸中的0s和2s處,分別按快捷鍵v, r和s,創建Visible,Rotate和Scale的關鍵幀(對應菜單Animations/Insert Keyframe中的相關選項),在1s處,創建scale關鍵幀;如下圖:點擊Scale在1s處的關鍵幀,做適當的放大和旋轉操作。 點擊播放按鈕,或者手工拖動,可以參看效果。
目前動畫只會播放一次,在cocosBuilder中設置循環播放,很簡單,在時間軸的下方選擇chain TimeLine為自身就可以了,如下圖:
這個原理就是,當播放完當前的TimeLime之后,接著再播放此timeline,這樣就循環起來的了。
關于timeLine,還可以設置其播放時間(默認為10s),點擊時間軸上方的時間:
在彈出的對話框中設置就可以了:
還可以創建多個時間軸,
按照上面的循環動畫的方式,也可以串起來做復雜的動畫。這些動畫也可以在cocos2dx代碼中被調用。十分的靈活方便。
代碼的集成
當cocosBuilder完成對ccb的編輯之后,點擊菜單File/Publish, 導出ccb成為ccbi文件到cocos2dx的Resources文件目錄下了(請參考上面的“配置cocosBuilder屬性”)。 然后在xcode中把ccbResources目錄和相應的ccbi文件加入到工程中,這樣就可以進行代碼編輯了。 代碼的集成,其實就是解析ccbi文件的過程,cocos2dx中針對cocosBuilder有相應的解析器CCBReader(位于extensions/CCBreader目錄下,CCBReader和CocosBuilder的版本有關系,請參考文末的“版本說明”); 由于C++沒有像Object-C的動態特性,所以集成CCBReader的代碼并沒有像cocos2d中那么簡單。不過理解其原理,理清思路后,其實也不是件困難的事情。所以,先講CCBReader的原理。ccbi文件其實對應了4類cocos2dx對象,一個ccbi文件中,包含了此對象的一些屬性信息。CCBReader讀取了這個ccbi文件,就清楚了這個對象的一切。這個時候,要把這些信息和我們的代碼聯系起來,就需要用CCNodeLoaderLibrary來聯系自定義的類,接著把這個信息拋給CCBReader,由其進行聯系。具體代碼如下:
[cpp]?view plaincopy
要理解上面的代碼,還需補充一點上面沒有提示的信息。默認情況下,ccbi對應了cocos2dx的4個類型之一,如果要對應我們自定義的類型(從4個類型中派生出來的),我們要在cocosBuilder中的根對象命名,如下圖:
選擇CCLayer,在右側的Custom class中填寫Intro。(如果是Custom class顯示為 JS Controller,點擊菜單Document/JavaScipt Controlled, 去掉其選項)。這個就可以理解上面的代碼了: [cpp]?view plaincopy
[cpp]?view plaincopy
CCReader進行ccbi和自定義類的聯系的過程如下,CCBReader一邊解析ccbi文件,一邊調用自定義類的onResolveCCBCCMenuItemSelector等方法;在這些回調方法中,可以進行相關的綁定工作,如對象綁定,CCMenuItem selector的綁定等。更多的綁定細則,請參考cocosBuilder中的幫助。
如果用Object-C就方便多了,由于其動態性,可以根據名稱自動反射,而C++則需要手工綁定,繁瑣些,不過為了cocosBuilder帶來的方便,這個也值得。
下一篇文章介紹怎么使用CocosBuilder加快Box2d的開發
版本說明
在這個demo中,cocosBuilder的版本為Version 3 alpha3,配套的cocos2dx版本為cocos2d-2.1rc0-x-2.1.2;
cocosBuilder的官方:http://cocosbuilder.com/
cocosBuilder官方教程:https://github.com/vlidholt/CocosDragon/blob/master/Tutorial/Tutorial.md
cocos2dx的相關頁面:http://www.cocos2d-x.org/news/95
源代碼下載:?http://vdisk.weibo.com/s/BSjUaUQYZZ_MR
源碼下載2:鏈接:http://pan.baidu.com/s/1qYJ4Nnu?密碼:g66s
總結
以上是生活随笔為你收集整理的CocosBuilder 使用技巧的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HC32L130F8UA使用ADC
- 下一篇: 各大搜索引擎爬虫UA