him 的cocos2dx-lua群中有童鞋出現一個問題,問題是當他在lua項目中利用lua建立一個局部變量ccsprite或者cclayer等ccnode,然後在其他的函數中通過其索引取出之前建立過的ccsprite或cclayer等,取出後進行設定設定透明、坐标、縮放、runaction等大部分幾率都出現無法正常縮放、透明等這些操作。群友嘗試了很多方式,都沒有解決掉。
其實對于此種問題很多剛接觸lua開發cocos2dx的開發者都很容易遇到,其實就是個強轉的問題,例如:
在 cpp中利用getchildbytag 函數擷取目标tag的ccnode:
1
2
ccsprite* sp = (ccsprite*)node->getchildbytag(x);
cclayer* layer = (cclayer*)node->getchildbytag(x)
在lua中代碼如下:
local sp = node:getchildbytag(x)
local layer =node:getchildbytag(x)
如上的代碼一對比很多童鞋就看出來了,lua形式的并沒有強轉類型!是的,就是因為沒有強轉造成。
還有一些童鞋該疑惑了“為什麼cocos2dx引擎示例中就沒有使用強轉呢?”
原因是由于示例基本都是采用成員變量進行的,局部變量還是有強轉的操作的。
那麼lua中強轉一個類型函數如下:
tolua.cast(object,”ccsprite”)
第一個參數是需要強轉的對象 , 第二個參數是強轉的目标類型
例如我們将x 強轉 ccsprite,則: tolua.cast(x,”ccsprite”)
quick-cocos2d-x 與 openquick
openquick:
quick-cocos2d-x :
簡單的說: openquick 與 quick-cocos2d-x 都是針對 2d遊戲 基于 lua 的免費開源架構,且都支援c2dx。
openquick :主要是将所有的c2dx的類的基礎上進行了再次封裝成q開頭檔案,開發者需在此基礎上進行使用開發。
quick-cocos2d-x : 及時與cocos2dx版本比對更新,另外它架構比較清晰,便于了解和使用。它所做的不是再次封裝,然後盡可能契合cocos2dx,在此基礎上做lua的擴充。
himi認為quick-cocos2d-x更适合一些,而且也是目前開發者使用居多的一款, 當然這大家可以更深入的去研究。