文章目錄
- 2.什麼時候才是CCB載入完成?
- 4.cocos2d-x常用的幾種單位在C++和JS裡的對應(jsb_coco2d.js)
- 5.類型
- 6.動態
1.CocosBuilder和Javascript裡的MVC模式
var scene = cc.BuilderReader.loadAsScene("CheckUpdateLayer");
var layer = cc.BuilderReader.load("CheckUpdateLayer");
這兩行代碼分別載入成scene和layer.
一般來說,我們會建立一個CheckUpdateLayer.js,要注意裡的”JS Controller”裡填入的”CheckUpdaeLayer”,其實並不是一個Layer,而是一個名副其實的Controller,因為CocosBuilder奉行的就是MVC模式.
舉個例子,如果在CheckUpdateLayer.js裡增加了一個方法,如下:
CheckUpdateLayer.prototype.foo = function() {
cc.log("this is afunction");
}
這個foo方法其實是屬於Controller的方法,並不是屬於Layer或Scene的方法.
2.什麼時候才是CCB載入完成?
CheckUpdateLayer.prototype.onDidLoadFromCCB =
function() {
cc.log("CheckUpdateLayerinit");
var l =cc.LayerColor.create(cc.c3b(33,233,0),
200, 200);
this.rootNode.addChild(l);
}
開啟jsb_cocosbuilder.js,找到cc.BuilderReader.load方法,你要看到你心中的疑問的答案.
3.generated/cocos2dxapi.js全錯了.
裡面的類都是帶CC首碼的,例如cc.CCNode,cc.CCLayer,cc.CCSprite,但其實真實在JS裡使用的時候是沒有首碼的,例如cc.Node,cc.Layer,cc.Sprite,etc…
4.cocos2d-x常用的幾種單位在C++和JS裡的對應(jsb_coco2d.js)
C++ |
Javascript |
CCLOG |
cc.log |
ccc3 |
cc.c3b |
ccc4 |
cc.c4b |
ccc4f |
cc.c4f |
ccp |
cc.p |
CCSize(w,h) |
cc.size |
CCRect(x,y,w,h) |
cc.rect |
5.類型
Javascript是弱類型語言,在這裡沒有CCArray,CCDictionary,因為任意一個Javascript的對象都具有數組和字典的基本特性.
6.動態
在編寫C++的時候,很羨慕Objective-c動態特性,例如NSLog(@“%@”, obj)這樣可以輸出對象的描述資訊.但在Javascript裡一切都是浮雲, cc.dump可以滿足你的需求.
7.多看cocos2d-2.1beta3-x-2.1.1/samples/Javascript裡的幾個demo,會解決你90%的疑問.