本渣最近一個月來開始接觸quick-cocos2d-x,用lua開發比c++要快些,但也由於quickx目前的一些坑,讓本渣折騰了很多時間。在此作點記錄,但願能讓別人少走些彎路。原文將不時更新:
http://galoisplusplus.coding.me/blog/2015/01/04/quick-cocos2d-x-pitfalls/node
cocostudio的Mac版v1導出的json用uiloader解析有問題,另外cocostuio v2暫無導出json的功能,而uiloader只能解析json格式。c++
若是大量使用quickx的ui類,仍是用cocostudio v1.5爲好json
若是不想切換UI編輯器,能夠直接用cocos2d-x的CSLoader,但要當心與quickx的ui類混用的狀況(下文會說起)。windows
若是不怕折騰,能夠研究下cocostudio v1.5的json格式,改quickx的源代碼。編輯器
在同時使用cocos2d-x的Widget類和quickx的ui類時,quickx的ui類沒有接受響應事件。
在此僅舉一個典型例子,在quickx的UIScrollView中加入一個CSLoader解析的Widget,則UIScrollView沒法滾動。
照理說,Widget的觸摸事件的priority是0(graph priority),quickx的LuaEventNode的priority是-1(fixed priority),應該是LuaEventNode先接收touch進行處理纔對,
可是Widget是單點觸摸,而LuaEventNode是多點觸摸,再加上cocos2d-x是先處理單點再處理多點的,因此觸摸事件反而是先到了Widget了。
不幸的是Widget默認是swallow touch的,因此觸摸事件不會到LuaEventNode。函數
完全杜絕此類混用。但因爲以前提到的uiloader的問題,可能沒法徹底使用quickx的ui類。ui
[workaround]若是不須要多點觸摸,能夠把LuaEventNode改爲單點觸摸。lua
老實說,這兩個ui類確實不夠成熟。spa
用local node space座標與world space座標作比較。引發的問題有:沒有慣性滾動,UIListView的item沒徹底移除viewRect就被remove掉等等。本渣向quickx提了兩個PR,前一個過了幾周才被處理,代碼有conflict,最後仍是開發者再提了新的PR去merge了,後一個很快就被merge了。因此目前更新代碼就能夠了。blog
UIListView如果所設的item size小於item的cascadeBoundingBox大小,滾動時會有死循環,反覆load item和remove item。開發者後來加了個patch,該bug重現少了,但仍是存在的。
點擊crash,是cocos2d-x C++的內存管理報錯。
已有人向quickx報過bug,但開發者回覆中提到的patch被沒有解決問題
在LuaEventNode的構造函數時retain參數node,在析構函數中release。