1. 程式人生 > >【COCOS2DX-LUA 指令碼開發之六】利用Lua強轉函式解決使用CCNode報錯或無法正常使用以及簡單介紹 quick-cocos2d-x 與 OpenQuick 兩款Lua免費開源框架

【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:

12CCSprite* sp =  (CCSprite*)node->getChildByTag(x);
CCLayer* layer =  (CCLayer*)node->getChildByTag(x)

在Lua中程式碼如下:

12local 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 :

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

相關推薦

COCOS2DX-LUA 指令碼開發利用Lua函式解決使用CCNode無法正常使用以及簡單介紹 quick-cocos2d-x OpenQuick Lua免費開源框架

Him 的Cocos2dx-Lua群中有童鞋出現一個問題,問題是當他在Lua專案中利用Lua建立一個區域性變數CCSprite或者CCLayer等CCNode,然後在其他的函式中通過其索引取出之前建立過的CCSprite或CCLayer等,取出後進行設定設定透明、座標、縮放、

COCOS2DX-LUA 指令碼開發十三解決lua專案編譯Android出現get data from file failed、Cocos2dxActivity cannot be 路徑等問題

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) CCString* pstrFileContent = CCString::createWithContentsOfFile("himi.lua"); if (pstrFi

COCOS2DX-BOX2D遊戲開發 讀取tiledmap的tmx阻擋

做一款畫素遊戲專案,需要讀取TMX檔案中的阻擋區域,生成box2d的fixture,來做阻擋  使用cocos2dx版本: 2.2.2 1.在tmx檔案中建立一個"Physics"的層,用來存放編輯器中生成的各種阻擋塊 編輯器中主要有polygone, polyline,

COCOS2DX-BOX2D遊戲開發 Box2D勻速運動

文章最後,附上自己的勻加速程式碼片段 以勻速移動物體 遊戲中一種常見的需求是讓物體做勻速運動。例如橫屏遊戲中的玩家角色,太空飛船或者汽車,等等。根據遊戲的不同,有時候物體應該逐漸改變速度,其他情況又希望能夠瞬間開始和停止運動。使用SetLinearVelocity方

COCOS2DX-IOS-遊戲開發二一 最熱血的RPG+RTS塔防遊戲Flesh&Blood-Attack on Orc上線了

我們的新遊戲Flesh&Blood – Attack on Orc  中文名:血肉之軀 正式在AppStore上線了,是一款熱血的塔防RTS遊戲,同時支援iPhone和iPad AppStore下載地址: 目前是收費的,過兩天限免的時候我會第一時間通知大家的. 

APACHE MINA2.0開發自定義實現SERVER/CLIENT端的編解碼工廠(自定義編碼解碼器)!

在上一篇博文中已經簡單介紹過“過濾器”的概念,那麼在Mina 中的協議編解碼器通過過濾器 ProtocolCodecFilter 構造,這個過濾器的構造方法需 要一個 ProtocolCodecFactory,這從前面註冊 TextLineCodecFactory 的程式碼就可以看出來。 Protoc

REACT NATIVE 系列教程十三利用LISTVIEWTEXTINPUT製作聊天/對話方塊&&獲取元件例項常用的種方式

補充說明:一:很多童鞋問,鍵盤調出來被擋住了,那麼下面給出三個解決方案:1. 在render最外層包一個ScrollView,然後當鍵盤調出時,scrollTo即可實現。2. 在底部新增一個可變化高度的view,根據鍵盤獲取、失去焦點時,進行處理實現二:有的童鞋說對話方塊的背景沒有根據內容長短自適應,OK ,

iOS-cocos2d-X 遊戲開發Cocos2dX建立Android NDK新專案並編譯匯入Eclipse中正常執行!

站文章均為 李華明Himi 原創,轉載務必在明顯處註明: 轉載自【黑米GameDev街區】 原文連結: http://www.himigame.com/android-game/645.html          ☞ 點選訂閱 ☜ 本部落格最新動態

學習筆記Cocos2d-x Lua指令碼開發如何使用Lua指令碼呼叫自定義類

步驟:自定義類——>使用tolua++編譯到LuaCoco2d.cpp——>Lua指令碼呼叫 具體的操作步驟如下: 步驟一:自定義類 建立自定義類 //DeepSeaHero.h #include "cocos2d.h" using namespace

Android遊戲開發Android Gesture觸控式螢幕手勢識別操作!利用觸控式螢幕手勢實現一個簡單切換圖片的功能!

原創,轉載務必在明顯處註明:很多童鞋說我的程式碼執行後,點選home或者back後會程式異常,如果你也這樣遇到過,那麼你肯定沒有仔細讀完Himi的博文,第十九篇Himi專門寫了關於這些錯誤的原因和解決方法,這裡我在部落格都補充說明下,省的童鞋們總疑惑這一塊;請點選下面聯絡進入

.NET開發使用ComponentOne提高.NET DataMap中的載入速度

概述 FlexGrid for WinForm 採用了最新的資料繫結技術,並與Microsoft .NET Framework無縫整合。 因此,您可以獲得易於使用的靈活網格控制元件,用於建立使用者友好介面,以顯示、編輯、格式化、組織、彙總和打印表格資料。 FlexGrid的DataMap屬性允

webpack結合React開發環境配置React開發環境配置Webpack結合Babel8.x版本安裝的正確姿勢(Webpack最新版4.x結合Babel8.x環境配置步驟)

1. 安裝cnpmnpm install -g cnpm --registry=https://registry.npm.taobao.org【使用淘寶映象】2. 初始化package.json檔案cnpm init -y3. 安裝webpackcnpm install -d webpack webpack-

OCR技術系列文字檢測CTPN的程式碼實現

這幾天一直在用Pytorch來複現文字檢測領域的CTPN論文,本文章將從資料處理、訓練標籤生成、神經網路搭建、損失函式設計、訓練主過程編寫等這幾個方面來一步一步復現CTPN。CTPN演算法理論可以參考這裡。 訓練資料處理 我們的訓練選擇天池ICPR2018和MSRA_TD500兩個資料集,天池ICPR的資

redis學習基於Redis的分散式session實現

    在web應用中,我們經常會用session來儲存已登入使用者的相關資訊,在單機應用中,由於所有的使用者都訪問同一個應用,而session都儲存在此單機應用中所以並無不妥。但是隨著使用者併發量的上升,分散式系統勢在必行,這就導致一個使用者的訪問請求可能會分發到不同的叢集部署

UNITY3D 遊戲開發C# 中的委託、事件、匿名函式、Lambda 表示式

"委託是一個類,它定義了方法的型別,使得可以將方法當作另一個方法的引數來進行傳遞,這種將方法動態地賦給引數的做法,可以避免在程式中大量使用If-Else(Switch)語句,同時使得程式具有更好的可擴充套件性。" from: http://www.himigame.com/

微信小程式開發javascript建立date物件

最近開發中用到date,開始以如下方式來建立: var date = new Date('2018-01-30 11:00:00'); 在開發工具上,除錯,ios 和 android都好好的。 在真機上一跑,android沒問題,ios出問題了。 不應該呀,按理,在開發工具上整合的是ios瀏覽器核心。

Hadoop學習MapReduce

分享圖片 耦合 output 2.x 大文件 分片 trac bubuko hdfs 一、概念MapReduce:"相同"的key為一組,調用一次reduce方法,方法內叠代這一組數據進行計算 塊、分片、map、reduce、分組、分區之間對應關系block > sp

Mac + Appium + Python3.6學習()安裝Android模擬器(Genymotion)並運行模擬器進行自動化

註冊 允許 rgba tin 字符 虛擬 macos 運行 class 環境: MacOS:10.13.6 Virtualbox:5.2.22 Genymotion:genymotion-2.12.2 本文Virtualbox、Genymotio

ZYNQ-7000開發AXI CDMA特點以及在PS端使用的步驟_理論部分 未完待續

本編文章是AXI Central Direct Memory Access v4.1的閱讀筆記 硬體規格部分 簡介: AXI CDMA為嵌入式系統提供了高效能的片上互聯 The AXI CDMA provides high-bandwidth D

quick-cocos2d-x 遊戲開發quick cocos2dx 3.2最穩定版 建立工程+sublime除錯執行

測試環境mac quick cocos2dx 3.2 quick cocos2dx 3.2版本已經差不多了 已經可以建立工程使用了,看下流程 1.最新版quick cocos2dx 3.2 建立工程,編譯,執行 1.1下載 按照README配置工程,執行player3