日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

关于tolua的使用

發布時間:2025/3/17 编程问答 20 豆豆
生活随笔 收集整理的這篇文章主要介紹了 关于tolua的使用 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、首先在引擎的跟目錄下找到cocos2d-x自帶的工具tolua++


二、使用tolua++生成自定義類的聲明

打開tool文件夾中的readme文件如下:

[cpp] view plaincopy
  • 1.?Generating?the?lua<-->C?bindings?with?tolua++??
  • tolua++.exe?-tCocos2d?-o?LuaCocos2d.cpp?Cocos2d.pkg??
  • 我們為了方便可以制作一個批處理文件、放在tolua.exe同目錄下、每次點擊就可產生自定義類的聲明、如下

    [cpp] view plaincopy
  • -----------------------------------------createCpp.bat---------------------------??
  • @echo?on??
  • E:\gkh_netdisk\tools\tolua++\tolua++.exe?-o?testCtoLua.cpp?testCtoLua.pkg??
  • @pause??
  • ---------------------------------------------------------------------------------??
  • 然后開始編寫testCtoLua.pkg 要遵循以下的規則

    [cpp] view plaincopy
  • 2.Writing?.pkg?files??編寫pkg文件??
  • 1)enum?keeps?the?same?保持枚舉類型不變??
  • 2)remove?CC_DLL?for?the?class?defines,?pay?attention?to?multi?inherites?刪除CC_DLL的類定義、改為多繼承??
  • 3)remove?inline?keyword?for?declaration?and?implementation?刪掉聲明的inline關鍵詞??
  • 4)remove?public?protect?and?private?刪除訪問限定??
  • 5)remove?the?decalration?of?class?member?variable?刪除類的成員變量??
  • 6)keep?static?keyword??保留statiic關鍵詞??
  • 7)remove?memeber?functions?that?declared?as?private?or?protected?成員函數聲明為私人或受保護的都刪掉??
  • ?我這里就不去寫了、就直接用現成的CCDirector類做個測試

    [cpp] view plaincopy
  • -----------?CCDirector.pkg-----------??????
  • typedef?enum?{?????
  • ????///?Device?oriented?vertically,?home?button?on?the?bottom??
  • ????kCCDeviceOrientationPortrait?=?0,?//?UIDeviceOrientationPortrait,??
  • ????///?Device?oriented?vertically,?home?button?on?the?top??
  • ????kCCDeviceOrientationPortraitUpsideDown?=?1,?//?UIDeviceOrientationPortraitUpsideDown,??
  • ????///?Device?oriented?horizontally,?home?button?on?the?right??
  • ????kCCDeviceOrientationLandscapeLeft?=?2,?//?UIDeviceOrientationLandscapeLeft,??
  • ????///?Device?oriented?horizontally,?home?button?on?the?left??
  • ????kCCDeviceOrientationLandscapeRight?=?3,?//?UIDeviceOrientationLandscapeRight,??
  • }?ccDeviceOrientation;??
  • ??
  • class?CCDirector?:?public?CCObject??
  • {??
  • ????CCScene*?getRunningScene(void);??
  • ????double?getAnimationInterval(void);??
  • ????bool?isDisplayFPS(void);??
  • ????void?setDisplayFPS(bool?bDisplayFPS);??
  • ????bool?isRetinaDisplay();??
  • ????bool?isPaused(void);??
  • ????unsigned?int?getFrames(void);??
  • ????CCSize?getWinSize(void);??
  • ????CCSize?getWinSizeInPixels(void);??
  • ????CCSize?getDisplaySizeInPixels(void);??
  • ????CCPoint?convertToGL(CCPoint?obPoint);??
  • ????CCPoint?convertToUI(CCPoint?obPoint);??
  • ????void?runWithScene(CCScene?*pScene);??
  • ????void?pushScene(CCScene?*pScene);??
  • ????void?popScene(void);??
  • ????void?replaceScene(CCScene?*pScene);??
  • ????CGFloat?getContentScaleFactor(void);??
  • ????int?getDeviceOrientation();??
  • ????static?CCDirector*?sharedDirector(void);??
  • };??
  • 然后將編寫好的*.pkg文件復制到tolua++文件目錄下、雙擊前文的批處理文件、不出意外就能生成相對應的Cpp文件了
    ?
    CCDirector.cpp中的關鍵代碼是這些:

    [cpp] view plaincopy
  • tolua_beginmodule(tolua_S,"CCDirector");??
  • tolua_function(tolua_S,"getRunningScene",tolua_CCDirector_CCDirector_getRunningScene00);??
  • tolua_function(tolua_S,"getAnimationInterval",tolua_CCDirector_CCDirector_getAnimationInterval00);??
  • tolua_function(tolua_S,"isDisplayFPS",tolua_CCDirector_CCDirector_isDisplayFPS00);??
  • tolua_function(tolua_S,"setDisplayFPS",tolua_CCDirector_CCDirector_setDisplayFPS00);??
  • tolua_function(tolua_S,"isRetinaDisplay",tolua_CCDirector_CCDirector_isRetinaDisplay00);??
  • tolua_function(tolua_S,"isPaused",tolua_CCDirector_CCDirector_isPaused00);??
  • tolua_function(tolua_S,"getFrames",tolua_CCDirector_CCDirector_getFrames00);??
  • tolua_function(tolua_S,"getWinSize",tolua_CCDirector_CCDirector_getWinSize00);??
  • tolua_function(tolua_S,"getWinSizeInPixels",tolua_CCDirector_CCDirector_getWinSizeInPixels00);??
  • tolua_function(tolua_S,"getDisplaySizeInPixels",tolua_CCDirector_CCDirector_getDisplaySizeInPixels00);??
  • tolua_function(tolua_S,"convertToGL",tolua_CCDirector_CCDirector_convertToGL00);??
  • tolua_function(tolua_S,"convertToUI",tolua_CCDirector_CCDirector_convertToUI00);??
  • tolua_function(tolua_S,"runWithScene",tolua_CCDirector_CCDirector_runWithScene00);??
  • tolua_function(tolua_S,"pushScene",tolua_CCDirector_CCDirector_pushScene00);??
  • tolua_function(tolua_S,"popScene",tolua_CCDirector_CCDirector_popScene00);??
  • tolua_function(tolua_S,"replaceScene",tolua_CCDirector_CCDirector_replaceScene00);??
  • tolua_function(tolua_S,"getContentScaleFactor",tolua_CCDirector_CCDirector_getContentScaleFactor00);??
  • tolua_function(tolua_S,"getDeviceOrientation",tolua_CCDirector_CCDirector_getDeviceOrientation00);??
  • tolua_function(tolua_S,"sharedDirector",tolua_CCDirector_CCDirector_sharedDirector00);??
  • 只要把cpp中的對應的代碼復制到引擎目錄下cocos2d_support文件夾中Luacocos2d.cpp中就搞定了 然后重新編譯項目、就可以在lua中使用這個接口了、

    轉載于:https://www.cnblogs.com/quansir/p/3170986.html

    總結

    以上是生活随笔為你收集整理的关于tolua的使用的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。