lua 对象与 c++对象及互调

记录下别人的好的Blog链接

lua调用c++类对象这里写链接内容

lua调用lua类这里写链接内容

luaViewSDK 执行脚本堆栈

lvNewButton 
 luaD_precall 
 luaV_execute 
 luaD_call 
 f_call 
 luaD_rawrunprotected 
 luaD_pcall 
 lua_pcall 
 lv_runFunctionWithArgs 
 lv_runFunction 
 -[LuaViewCore runData:fileName:changeGrammar:] 
 -[LuaViewCore runData:fileName:] 
 -[LuaViewCore runFile:] 
 -[LuaView runFile:] 

oc代码

- (void) initlua{
    NSString * str = [[NSBundle mainBundle] pathForResource:@"me" ofType:@"lua"];

    CGRect cg = self.view.bounds;
    cg.origin = CGPointZero;
    self.lview = [[LView alloc] initWithFrame:cg];
    self.lview.viewController = self;
    [self.view addSubview:self.lview];
    [self.lview runFile: str];
}

lua代码

function createButton( text , x,y,w,h, callback)
    local button = Button();
    button:frame(x,y,w,h);
    button:text(text);
    button:backgroundColor(0xeeeeee);
    button:callback( function()
                    print("ok",button);
                    if( callback ) then
                    callback();
                    end
                    end);
    return button;
end

button1 = createButton("测试",10,10,300,60);



button3 = Button();
button3:frame(10,250,100,100);
button3:image("button0.png","button1.png");



button3:callback(function()
                local sourcestr = "This is a rainy day!";
                local sourcelen = string.len(sourcestr);
                local xxlen=button3:selected();
                print("\nthe len of sourcestr is "..sourcelen);
                print(xxlen);

                if xxlen then
                    button3:selected(false);
                else
                    button3:selected( true );
                end
                print("我是图片按钮2");
end);

点击按钮取串长度调用层次, oc调用 lua库函数string.len的层次

lua_tolstring 
 luaL_checklstring 
 str_len 
 luaD_precall 
 luaV_execute 
 luaD_call 
 f_call 
 luaD_rawrunprotected 
 luaD_pcall 
 lua_pcall 
 lv_runFunctionWithArgs 
 lv_runFunction 
 -[NSObject(NSObjectLuaView) lv_buttonCallBack] 
 -[LVButton lvButtonCallBack] 

oc调用 lua, lua回调oc调用层次
如按钮, 调用按钮的点击消息,消息实体在lua中,lua会调用Button取是否按下属性,然后取反操作,通过lua来改变按钮的按下和弹起状态。

 selected 
 luaD_precall 
 luaV_execute 
 luaD_call 
 f_call 
 luaD_rawrunprotected 
 luaD_pcall 
 lua_pcall 
 lv_runFunctionWithArgs 
 lv_runFunction 
 -[NSObject(NSObjectLuaView) lv_buttonCallBack] 
 -[LVButton lvButtonCallBack] 

lua库函数加载及实现
linit.c中,有兴趣可以去解读下源代码

static const luaL_Reg lualibs[] = {
  {"", luaopen_base},
  {LUA_LOADLIBNAME, luaopen_package},
  {LUA_TABLIBNAME, luaopen_table},
  {LUA_IOLIBNAME, luaopen_io},
  {LUA_OSLIBNAME, luaopen_os},
  {LUA_STRLIBNAME, luaopen_string},
  {LUA_MATHLIBNAME, luaopen_math},
  {LUA_DBLIBNAME, luaopen_debug},
  {NULL, NULL}
};

lua原理介绍这里写链接内容

osx lua命令行安装这里写链接内容

duilib与lua结合这里写链接内容

探密 lua内部实现这里写链接内容

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值