cocos2dx 简单加载lua文件

来源:互联网 发布:域名.wang广告 编辑:程序博客网 时间:2024/05/21 19:27

1:首先建一个cocos2dx c++项目(不是lua项目)

2:下载一个lualib.a库(支持android的),可以去c++ lua项目中找(路径:

cocos2d-x/external/lua/luajit/prebuilt/android/armeabi/libluajit.a

放到我们的项目中,这里我直接放到jni目录下。

3:下载有关库的头文件,路径:

cocos2d-x/external/lua/luajit/include

放到我们的项目下:我的位置是jni目录

(jin目录:

4:修改android.mk文件

添加:

include $(CLEAR_VARS)

  4 LOCAL_MODULE := lua_static #库名称

  5 LOCAL_SRC_FILES := libluajit.a #库位置

  6 include$(PREBUILT_STATIC_LIBRARY)


LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes\

 23                 $(LOCAL_PATH)/luajit/include #头文件搜索路径



LOCAL_STATIC_LIBRARIES += lua_static #添加静态库


5:cpp代码

bool HelloWorld::init()

{

    //////////////////////////////

    // 1. super init first

    if ( !Layer::init() )

    {

        returnfalse;

    }


    auto label =Label::createWithTTF(" ","fonts/Marker Felt.ttf",24);

label->setPosition(Vec2(origin.x + visibleSize.width/2,

                            origin.y + visibleSize.height - label->getContentSize().height));


    this->addChild(label,1);


doCallLua(1,2);


std::string text;

char ch[128];

sprintf(ch,"the sum is : %d", _sum);

text = ch;

label->setString(text);

    

    returntrue;

}


void HelloWorld::doCallLua(int a,int b)

{

/*c 调用lua 流程*/

lua_State* L = luaL_newstate();

auto data =cocos2d::FileUtils::getInstance()->getStringFromFile("testCall.lua");

luaL_loadstring(L, data.data());

int res = lua_pcall(L,0,0,0);

if (res)

{

CCLOG("44334433%d", res);

}


lua_getglobal(L, "add");

lua_pushnumber(L, a);

lua_pushnumber(L, b);


int ret = lua_pcall(L,2, 1,0);//2为参数个数,1返回值,0没有错误处理函数,ret为0成功执行

if (ret)

{

CCLOG("2323232323:%d", ret);

}


if (lua_isnumber(L, -1))

{

_sum = lua_tonumber(L, -1);

}

}


6:testCall.lua文件

function add(a, b)

return a + b

end


7:手机显示

the sum is:3



0 0
原创粉丝点击