cocos2d-x Lua与OC互相调用

1. Lua 调用OC

先看例子:

hello.lua:

 -- 点击回调函数
    local function notifymenuCallbackTest()
    local luaoc = require(‘luaoc‘)
    local ok, ret = luaoc.callStaticMethod("RemoteRequestRouter", "notifyWatch", {params1 = "NOTIFICATION_TO_HOME"})
    end

RemoteRequestRouter.m

#pragma mark - 正确的通知WatchKit Extension的函数。
+ (void)notifyWatch:(NSDictionary *)dict {
    NSLog(@"IOS app call notifyWatch to notify Apple Watch.");
    NSString *str = [dict objectForKey:@"params1"];
    //(CFStringRef)str  CFSTR("")
    CFNotificationCenterPostNotification(CFNotificationCenterGetDarwinNotifyCenter(),
                                         (__bridge CFStringRef)str,
                                         (__bridge const void *)(self), nil, TRUE);
}

这样就完成了Lua调用静态类成员函数。

2. OC调用Lua

// functionId 是 Lua function 的引用 ID,参考 LuaJavaBridge 文章中的描述

// 1. 将引用 ID 对应的 Lua function 放入 Lua stack
CCLuaObjcBridge::pushLuaFunctionById(functionId);

// 2. 将需要传递给 Lua function 的参数放入 Lua stack
CCLuaValueDict item;
item["title"] = CCLuaValue::stringValue("hello");
item["coins"] = CCLuaValue::intValue(1000);
item["success"] = CCLuaValue::booleanValue(TRUE);
CCLuaObjcBridge::getStack()->pushCCLuaValueDict(item);

// 3. 执行 Lua function
CCLuaObjcBridge::getStack()->executeFunction(1);

// 4. 释放引用 ID
CCLuaObjcBridge::releaseLuaFunctionById(callbackId);
时间: 2024-10-23 08:24:41

cocos2d-x Lua与OC互相调用的相关文章

Cocos2d-x3.0下 Lua与C++相互调用

这里讲下Lua与C++之间如何实现相互调用 原文连接:http://blog.csdn.net/qqmcy/article/details/26052771 DJLCData.h 实现类 // // DJLCData.h // uitestLua // // Created by 杜甲 on 14-5-17. // // #ifndef __uitestLua__DJLCData__ #define __uitestLua__DJLCData__ #include "cocos2d.h"

iOS js oc相互调用JavaScriptCore(一)

原址:http://blog.csdn.net/lwjok2007/article/details/47058101 1.普通调用 从iOS7开始 苹果公布了JavaScriptCore.framework 它使得JS与OC的交互更加方便了. 下面我们就简单了解一下这个框架 首先我导入framework 方法如下 点击Linked Frameworks and Libraries 的添加后 选择 JavaScriptCore.framework 选中JavaScriptCore.framewor

iOS js oc相互调用(JavaScriptCore)

从iOS7开始 苹果公布了JavaScriptCore.framework 它使得JS与OC的交互更加方便了. 下面我们就简单了解一下这个框架 首先我导入framework 方法如下 点击Linked Frameworks and Libraries 的添加后 选择 JavaScriptCore.framework 选中JavaScriptCore.framework后 点击右下角Add 添加完成 好 创建完成之后我们导入一下头文件 #import <JavaScriptCore/JavaScr

Lua学习 1) —— Android调用变量取值与赋值

2014-07-08 Lua脚本语言,嵌入在App中扩展开发是很不错的. 关于Android与Lua的环境搭配,我直接下载别人编好的.so与.jar(放到libs下就好了) 下面简单介绍一下Android调用Lua中的变量以及赋值 LuaState mLuaState; mLuaState = LuaStateFactory.newLuaState(); mLuaState.openLibs();//加载库 mLuaState.LdoString("x = 101");//执行一段lu

iOS下JS与OC互相调用(一)--UIWebView 拦截URL

http://blog.csdn.net/u011619283/article/details/52135977 最近准备把之前用UIWebView实现的JS与原生相互调用功能,用WKWebView来替换.顺便搜索整理了一下JS 与OC 交互的方式,非常之多啊.目前我已知的JS 与 OC 交互的处理方式: * 1.在JS 中做一次URL跳转,然后在OC中拦截跳转.(这里分为UIWebView 和 WKWebView两种,去年因为还要兼容iOS 6,所以没办法只能采用UIWebView来做.) *

lua编程之lua与C相互调用

lua是扩展性非常良好的语言,虽然核心非常精简,但是用户可以依靠lua库来实现大部分工作.除此之外,lua还可以通过与C函数相互调用来扩展程序功能.在C中嵌入lua脚本既可以让用户在不重新编译代码的情况下修改lua代码更新程序,也可以给用户提供一个自由定制的接口,这种方法遵循了机制与策略分离的原则.在lua中调用C函数可以提高程序的运行效率.lua与C的相互调用在工程中相当实用,本文就来讲解lua与C相互调用的方法. Lua与C相互调用的首要问题是如何交换数据,lua API使用了一个抽象的栈与

转载 iOS js oc相互调用(JavaScriptCore)

iOS js oc相互调用(JavaScriptCore) 从iOS7开始 苹果公布了JavaScriptCore.framework 它使得JS与OC的交互更加方便了. 下面我们就简单了解一下这个框架 首先我导入framework 方法如下 点击Linked Frameworks and Libraries 的添加后 选择 JavaScriptCore.framework 选中JavaScriptCore.framework后 点击右下角Add 添加完成 好 创建完成之后我们导入一下头文件 [

Lua学习笔记--C调用Lua

Lua是一种嵌入式语言,可以很好的嵌入其他应用程序.lua为我们提供了一组灵活的C API,使C代码能够很好的与Lua进行交互.包括读写Lua全局变量,调用Lua函数,运行Lua代码,注册C函数反过来供Lua调用.简单的说,C能调用Lua,反过来Lua也能调用C.真的是灰常强大灵活的脚本!!现在,先来学习一下怎么用C调用Lua. 其实最简单的我们已经做过了,通过一个dofile,运行一个lua脚本文件. 一.栈 Lua与C的交互是通过一个虚拟栈进行的,这个栈对于Lua来说是严格的LIFO(后进先

lua和C++相互调用

从lua调用C++函数和对象,利用LuaPlus可以方便的从C++中调用lua脚本,反过也一样.通过注册函数或类对象,lua便可以访问C++. 一.C风格函数注册    Lua提供了C风格的回调函数注册,该函数原型如下: int Callback(LuaState* state); 无论是全局函数.类非虚函数.类虚函数,只要符合上面的原型,都可以向Lua注册.我们以全局函数为例,下面是我们提供的一个回调函数CStyleAddFunc: int CStyleAddFunc(LuaState * s