<embed>

本站文章均為 李華明Himi 原創,轉載務必在明顯處註明:(作者新浪微博: @李華明Himi 

轉載自【黑米GameDev街區】 原文連結: http://www.himigame.com/iphone-cocos2dx/1289.html 



          ☞ 點選訂閱 ☜
 本部落格最新動態!及時將最新博文通知您!



                 

 
 

 

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中程式碼如下:

1
2
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:

OpenQuick 首頁及下載地址:  https://github.com/marmalade/OpenQuick

quick-cocos2d-x :

quick-cocos2d-x 首頁及下載地址 : https://github.com/dualface/quick-cocos2d-x

簡單的說: OpenQuick 與 quick-cocos2d-x 都是針對 2D遊戲 基於 Lua 的免費開源框架,且都支援c2dx。

OpenQuick :主要是將所有的C2dx的類的基礎上進行了再次封裝成Q開標頭檔案,開發者需在此基礎上進行使用開發。

quick-cocos2d-x  : 及時與cocos2dx版本匹配更新,另外它框架比較清晰,便於理解和使用。它所做的不是再次封裝,然後儘可能契合cocos2dx,在此基礎上做Lua的擴充套件。

Himi認為quick-cocos2d-x更適合一些,而且也是當前開發者使用居多的一款,  當然這大家可以更深入的去研究。