cocos2dx-jsb 跨语言调用及第三方集成 - 过程记录
2013-08-23 10:17
351 查看
原文出处:http://www.cnblogs.com/sslin/archive/2013/05/21/3022684.html
1:C++中调用js方法:
问题:ios中当用户通过home键将游戏转入后台时,调用js中的暂停游戏方法;
AppDelegate::applicationDidEnterBackground() 和 applicationDidEnterForeground()方法是C++方式处理程序进入后台与前台的代码,在此处添加C++调用js的代码:
?
js中(假设类名plus,方法名:onDidEnterBackground):
var plus = {};
plus.onDidEnterBackground(){...//code here};
备注:
使用executeFunctionWithOwner的关键是获取Owner,JS_GetProperty是spideMonkey提供的一种获取属性(也是对象)的方式;
=========================================================
2:js中调用C++方法:
定义C++方法,然后将编写绑定, 以在TableView下增加一个testjs方法为例, 我们在jsb_cocos2dx_extension_manual.cpp中添加代码:
?
然后在register_all_cocos2dx_extenstion_manual(JSContext* cx, JSObject* global)末尾行添加一个定义:
?
最后在js文件中即可调用:
cc.TableView.testFuncTojs("hello , jsb!");
=========================================================
3:C++调用obj-C
定义oc的.h和.m文件,定义方法: testLog 和 testMessageBox
定义c++的.h文件
定义c++的cpp文件,将后缀名改为.mm
.mm文件混编写法如下:
?
之后在主程序中引入c++的.h文件后即可使用 invokeOC::myinit()方法;
=========================================================
4:C++和 Java的互调
制作安卓版本时,我们需要使用C++调用java的函数,这个通过jni实现,实例:
在头部引入文件:
#include <jni.h>
#include "platform/android/jniHelper.h"
然后定义C++方法:
?
在c++中调用callJavaFunc()方法或者绑定给js调用,然后使用NDK编译后在ADT中运行,即可调到java的方法;
java调用C++的方法:
首先在java中定义一个public static native void funcname(); 然后运行时会调用C++中一定命名规则的funcname函数;命名如下:
注意这里一定要extern "C" , 不然java无法找到这个native方法;
=========================================================
4:关于 2.1.3 Plugin-X
暂时未有空实现,附两篇好文:
http://go3k.org/blog/2013/07/08/cocos2dx-pluginx-1/ http://go3k.org/blog/2013/07/08/cocos2dx-pluginx-2/
=========================================================
5:参考:
2.1.0版本手动绑定TableView过程:https://github.com/cocos2d/cocos2d-x/pull/2015/files
调整C++源码;
scripting/javascript/bindings/cocos2d_specifices.cpp中添加绑定代码;
scripting/javascript/bindings/js/jsb_cocos2d.js中添加常量与扩展类;
tools/tojs/cocos2dx.ini 添加脚本生成的规则;
1:C++中调用js方法:
问题:ios中当用户通过home键将游戏转入后台时,调用js中的暂停游戏方法;
AppDelegate::applicationDidEnterBackground() 和 applicationDidEnterForeground()方法是C++方式处理程序进入后台与前台的代码,在此处添加C++调用js的代码:
?
var plus = {};
plus.onDidEnterBackground(){...//code here};
备注:
使用executeFunctionWithOwner的关键是获取Owner,JS_GetProperty是spideMonkey提供的一种获取属性(也是对象)的方式;
=========================================================
2:js中调用C++方法:
定义C++方法,然后将编写绑定, 以在TableView下增加一个testjs方法为例, 我们在jsb_cocos2dx_extension_manual.cpp中添加代码:
?
然后在register_all_cocos2dx_extenstion_manual(JSContext* cx, JSObject* global)末尾行添加一个定义:
?
cc.TableView.testFuncTojs("hello , jsb!");
=========================================================
3:C++调用obj-C
定义oc的.h和.m文件,定义方法: testLog 和 testMessageBox
定义c++的.h文件
定义c++的cpp文件,将后缀名改为.mm
.mm文件混编写法如下:
?
之后在主程序中引入c++的.h文件后即可使用 invokeOC::myinit()方法;
=========================================================
4:C++和 Java的互调
制作安卓版本时,我们需要使用C++调用java的函数,这个通过jni实现,实例:
在头部引入文件:
#include <jni.h>
#include "platform/android/jniHelper.h"
然后定义C++方法:
?
java调用C++的方法:
首先在java中定义一个public static native void funcname(); 然后运行时会调用C++中一定命名规则的funcname函数;命名如下:
extern "C" { void Java_org_cocos2dx_项目名_类名_funcname(JNIEnv *env, jobject thiz) { CCLog("jni : java call C++ "); } }
注意这里一定要extern "C" , 不然java无法找到这个native方法;
=========================================================
4:关于 2.1.3 Plugin-X
暂时未有空实现,附两篇好文:
http://go3k.org/blog/2013/07/08/cocos2dx-pluginx-1/ http://go3k.org/blog/2013/07/08/cocos2dx-pluginx-2/
=========================================================
5:参考:
2.1.0版本手动绑定TableView过程:https://github.com/cocos2d/cocos2d-x/pull/2015/files
调整C++源码;
scripting/javascript/bindings/cocos2d_specifices.cpp中添加绑定代码;
scripting/javascript/bindings/js/jsb_cocos2d.js中添加常量与扩展类;
tools/tojs/cocos2dx.ini 添加脚本生成的规则;
相关文章推荐
- cocos2dx-jsb 跨语言调用及第三方集成 - 过程记录
- cocos2dx-jsb 跨语言调用及第三方集成 - 过程记录
- cocos2dx-jsb 跨语言调用
- cocos2dx-jsb 跨语言调用
- cocos2dx-jsb 跨语言调用
- cocos2dx-jsb 跨语言调用
- openstack nova集成docker部署过程记录
- Java 学习过程记录_语言基础
- [问题记录]cocos2dx编译打包apk过程&问题记录
- 马上要学习一门新的语言了,并且直接做一个项目,我要在这记录我学习的过程,加油
- C 函数被调用时发生了什么:过程活动记录
- 汇编语言系统调用过程
- codeStriker(及与svn、bugzilla集成)使用过程记录 续
- 如何记录selenium自动化测试过程中接口的调用信息
- 润乾集算器与帆软报表集成(直接通过jdbc,类DB存储过程方式调用)
- Cocos2dx-jsb 3.x 精灵构建过程浅析(2):
- Java语言深入--java调用C/C 的过程
- 看代码的过程中经常看到promote()调用,简单记录refbase
- 友盟集成第三方登录 分享 (微信登录原生调用)
- 记录一次用jenkins持续集成maven项目到tomcat的过程