mac 10.9.1
xcode 5.0.2
cocos2dx 2.2.1
cocosBuilder 3.0-alpha5
1、 每次腳本有改動,Xcode都要清理。
2、Get data from file(.ccbi) failed!
3、attempt to call field 'setPosition' (a nil value)
定義: local MainScene =class("MainScene", function()
return CCLayer:create()
end)
覆寫函數:
function MainScene:setPosition(x, y)
print("x = %0.2f, y = %0.2f", x, y)
--getmetatable(self).setPosition(self, x,y) --報錯 因為setPosition函數在CCNode中 CClayer種沒有。
getmetatable(getmetatable(self)).setPosition(self,x,y) --正確
end
4、attempt to index local 'self' (a number value)
使用引擎提供的CCBuilderReaderLoad加載ccbi文件,回調函數報錯
使用:
function MainScene:dialogClick()
cclog("dialogClick")
local PersonPanel=require "luascript/PersonPanel"
self:addChild(PersonPanel.new())
self:setPosition(0,0)
end
解決方案:
定義方法:
function handler(target, method)
return function(...)
return method(target, ...)
end
end
在CCBuilderReaderLoad函數里所有設置回調的地方做如下修改。
--proxy:setCallback(callbackNode, ccb[documentControllerName][cbName], integerValue:getValue())
proxy:setCallback(callbackNode, handler(owner, owner[cbName]), integerValue:getValue())
5、事件分發問題:
首先參考 http://linuxp.blog.163.com/blog/static/17096277201382115558525/ 的文章
然后參考 http://bbs.9ria.com/thread-222180-1-1.html 的文章
CCMenu的事件優先級引擎已經固定為-128,
見CCMenu.pkg
enum {
kCCMenuHandlerPriority = -128
};
我們要重新設置CCMenu的優先級,否則如果兩個ccbi文件種的CCMenu事件優先級一樣,上層就無法截獲事件了。也就是下層的CCMenu 上層的CClayer和上層的CCMenu的事件優先級是越來越高才對。
程序里做如下處理:
function PersonPanel:setMenuProperty()
local menu=tolua.cast(PersonPanel.PersonPanelMenu,"CCMenu")
menu:setHandlerPriority(property)
property=property-1
end
初始化時調用: performWithDelay(self,handler(self,self.setMenuProperty),1)--這樣調用是有原因的。
6、CCScrollView與CCMenu的事件優先級問題
參考:http://blog.csdn.net/liliangchw/article/details/8612485
7、CCScrollView回調問題
8、CCScrollView 內容顯示位置問題
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。