天天看點

【COCOS2DX-LUA 腳本開發之六】利用LUA強轉函數解決使用CCNODE報錯或無法正常使用以及簡單介紹 QUICK-COCOS2D-X 與 OPENQUICK 兩款LUA免費開源架構

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更适合一些,而且也是目前開發者使用居多的一款,  當然這大家可以更深入的去研究。

繼續閱讀