当前位置: 首页 > news >正文

上海微网站网片钢筋生产厂家

上海微网站,网片钢筋生产厂家,河南网站搭建,wordpress标签页版本#xff1a; cocos2d-x 语言#xff1a; C/Java/Lua 简介 cocos2d-x原生平台Android 接入第三方SDK, 需要了解LuaJavaBridge的使用。 它封装了用于Java和Lua的相互调用, 其调用通过C为中介#xff0c;简要的流程#xff1a; Lua调用Java: Lua - C - Java J…版本 cocos2d-x 语言 C/Java/Lua 简介 cocos2d-x原生平台Android 接入第三方SDK, 需要了解LuaJavaBridge的使用。 它封装了用于Java和Lua的相互调用, 其调用通过C为中介简要的流程 Lua调用Java: Lua - C - Java Java调用Lua: Java - C - Lua 以此方式来实现数据的交互 接下来我们分别说下这两块东西。 Lua调用Java lua的接口文件主要在 cocos/cocos2d目录下主要的文件是 luaj.lua Lua调用Android平台的接口文件luaoc.lua Lua调用苹果平台的接口文件 调用原生平台使用的方法名均为 callStaticMethod ---------------- luaj.lua ---------------- -- 用于对参数转换为Java的类型简写 local function checkArguments(args, sig)if type(args) ~ table then args {} endif sig then return args, sig end-- Java支持Lua的几种参数类型number,boolean,string, function-- 如果不存在则按照如下程序进行转换sig {(}for i, v in ipairs(args) dolocal t type(v)if t number thensig[#sig 1] Felseif t boolean thensig[#sig 1] Zelseif t function thensig[#sig 1] Ielsesig[#sig 1] Ljava/lang/String;endendsig[#sig 1] )Vreturn args, table.concat(sig) end--[[ function: 调用java的接口注意在使用的时候一定要判定是否为为Android平台 param: className Java完整的类名 param: methodName Java类方法名 param: args lua传入的参数要为table类型否则会被转换{} param: sig 类型简写名格式为(参数简写)返回类型简写 ]] function luaj.callStaticMethod(className, methodName, args, sig)-- 检测参数args并将其转换为类型简写local args, sig checkArguments(args, sig)return callJavaStaticMethod(className, methodName, args, sig)end endreturn luaj使用Lua调用Java需要注意 Java的方法一定要设置为static类型一定要判定平台的类型比如AndroidIOSMac等一定要根据考虑不同版本对原生平台方法的支持这个主要是防止后续增加的功能前期版本调用错误Lua的callStaticMethod 注意第三个传入参数一定要为table表数据避免错误 在Lua项目中针对于平台的判定相关 -- 示例1 local targetPlatform cc.Application:getInstance():getTargetPlatform() if (cc.PLATFORM_OS_ANDROID targetPlatform) then-- do something end -- 示例2 if device.platform android then-- do something endcheckArguments 它主要用于将Lua的参数转换为Java的类型简写以用于获取数据如下Java支持的Lua类型简写 Lua类型简写格式说明numberF浮点类型booleanZ布尔类型functionI整数或方法stringLjava/lang/String;字符串V用于java方法中无返回值 这个是跟C调用Java是类似的但Lua没有那么多的数据类型支持比如C中的char, shot, long, double等。 类型简写的格式大致为 (参数类型简写)返回类型简写简单的实例 Java方法简写说明void showText()“()V”无参数无返回int getWifiLevel()“()I”无参数返回整型String getSystemVersion()“()Ljava/lang/String;”无参数返回字符串int addNumber(final int num1, final int num2)“(II)I”参数两个整型返回整型boolean isGetPhoneData(final String name, final int Count)“(Ljava/lang/String;I)Z”参数分别为字符串整型返回布尔类型 在checkArguments中存在关于类型简写的转换但是建议了解下以备突发情况使用。 callStaticMethod 它是Lua调用调用C的中介接口用于将参数相关通过C传递给Java。它的主要实现在 // ../frameworks/cocos2d-x/cocos/scripting/lua-bindings/manual/platform/android目录下 // CCLuaJavaBridge.cpp void LuaJavaBridge::luaopen_luaj(lua_State *L) {s_luaState L;lua_newtable(L);lua_pushstring(L, callStaticMethod);lua_pushcfunction(L, LuaJavaBridge::callJavaStaticMethod);lua_rawset(L, -3);lua_setglobal(L, LuaJavaBridge); }该接口在Lua中调用后主要会有两个返回值分别是 成功标记布尔类型错误编码整数类型 如果成功则错误编码为0否则就是其他数值主要的错误码有 // CCLuaBridget.h typedef enum {// 成功kLuaBridgeErrorOk 0, // 无效的参数kLuaBridgeErrorInvalidParameters -1,// 类没有找到kLuaBridgeErrorClassNotFound -2,// 方法没有找到kLuaBridgeErrorMethodNotFound -3,// 执行异常kLuaBridgeErrorExceptionOccurred -4,// 错误的类型简写kLuaBridgeErrorMethodSignature -5,// 虚拟机错误kLuaBridgeErrorJavaVMError -6, } LuaBridgeError;这个错误类型与luaoc.lua的检测类型参数是相似的。官方实例 Lua相关 -- LuaBridgeTest.lua 示例仅摘抄了其主体代码 function newLuaJavaBridge()local targetPlatform cc.Application:getInstance():getTargetPlatform()if (cc.PLATFORM_OS_ANDROID ~ targetPlatform) thenreturn end -- 引用库文件local luaj require cocos.cocos2d.luaj-- Java类名local className com/cocos2dx/sample/LuaJavaBridgeTest/LuaJavaBridgeTest-- Java方法名local methodName addTwoNumbers -- 参数local args {2, 3}-- 类型简写local sigs (II)I-- 调用方式一: 传入两个参数获取数值local success, result luaj.callStaticMethod(className, methodName, args, sigs)if not success thenprint(luaj error:, result)elseprint(The result is:, result)end-- 调用方式二: 传入两个参数获取结果通过Lua的回调显示日志local function callbackLua(param)if success param thenprint(java call back success)endendargs { callbacklua, callbackLua }sigs (Ljava/lang/String;I)Vok luaj.callStaticMethod(className,callbackLua,args,sigs)if not ok thenprint(call callback error)end endJava相关 package com.cocos2dx.sample.LuaJavaBridgeTest;// 用于java调用Lua import org.cocos2dx.lib.Cocos2dxLuaJavaBridge;public class LuaJavaBridgeTest { // Lua调用javapublic static int addTwoNumbers(final int num1,final int num2){return num1 num2;}// Java调用Luapublic static void callbackLua(final String tipInfo,final int luaFunc){// 调用局部Lua-Function将luaFunc结果发送给LuaCocos2dxLuaJavaBridge.callLuaFunctionWithString(luaFunc, success);Cocos2dxLuaJavaBridge.releaseLuaFunction(luaFunc);} }至此Lua调用Java告一段落。 Java调用Lua Java是允许调用Lua的同Java调用C一样。主要的接口是 // 调用局部Lua-Function public static native int callLuaFunctionWithString(int luaFunctionId, String value); // 调用全局Lua-Function public static native int callLuaGlobalFunctionWithString(String luaFunctionName, String value); // retain一次Lua-Function public static native int retainLuaFunction(int luaFunctionId); // release掉Lua-Function public static native int releaseLuaFunction(int luaFunctionId); 后续补充…
http://wiki.neutronadmin.com/news/301416/

相关文章:

  • 网站上线前准备悟空crm的优势与不足
  • 商丘网站网站建设品牌官网设计
  • 一个专门做ppt的网站二次开发机器人
  • 公司网站开发排名成都微信小程序开发公司
  • 做外贸大一点的网站销客多
  • 在线设计网站可以做ps和ppt网站购物车怎么做
  • 利用店铺网站做灰色优化快站app
  • 电商的网站开发订单返利功能网站托管服务适用于哪种类型的网站
  • 一级a做爰片免费网站录像网站新闻页设计
  • 网站开发是哪个职位快速模板建站工具
  • 网站建设网站设东莞网页制作费用
  • 四川省微信网站建设施工企业会计实务
  • 建设网站开发方案网站建设费用高
  • 南昌 网站 公司百度制作公司网页
  • 现在c 做网站用什么框架opencart做的网站
  • 做app和做网站相同和区别seo课培训
  • 江苏广泽建设有限公司网站seo推广排名重要吗
  • 厦门本地网站天眼查网页版
  • 济南 域名注册 网站建设备案 网站 收录
  • 自助下单网站怎么做做网站除了dw
  • 福建建设厅网站官网苏州高端网站建设公司
  • 免费网站模板库重庆网络网站建设
  • 高端企业网站建设费用wordpress外观小工具
  • 怎么快速建设小型外贸网站制作网站和制作网页的分别
  • 网站首页新闻模板网站的页面大小
  • 培训机构一般在什么网站做推广支付网站建设推广的会计分录
  • 营销型网站具备的二大能力做网站绿标
  • 哈尔滨网站建设服务公司用源码建设网站
  • 百度seo专业网站夏县做网站
  • html设计网站学校网站建设的意义和应用