本站文章均為 李華明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更適合一些,而且也是當前開發者使用居多的一款, 當然這大家可以更深入的去研究。