【COCOS2DX-ANDROID-游戏开发之二二】之 调用Cocos2dxGLSurfaceView
2013-12-11 18:14
656 查看
原文地址:http://www.cnblogs.com/howeho/p/3317339.html
前面博客说到,cocos2d-xc++界面层运行在一个GLThread线程里面,严格的说是运行在Cocos2dxGLSurfaceView(继承自GLSurfaceView)
里面。opengl的渲染,刷新都是有这个类来完成。所以我们不能直接在java方法里调用c++方法来刷新界面,唯一的方法就是绕开javaUI主线程,让GLSurfaceView来做这件工作。
ok,前面说到Cocos2dxGLSurfaceView类,它是cocos2d-x引擎的一部分,直接修改该类太粗暴。所以以下新建一个Class
TimerJavaToC.java以下只写核心方法
privatestaticnativevoidjavaCallC();
mGLSurfaceView.queueEvent(newRunnable()
{
@Override
publicvoidrun()
{
//调用jni\
TimerJavaToC.javaCallC();
}
});
前面博客说到,cocos2d-xc++界面层运行在一个GLThread线程里面,严格的说是运行在Cocos2dxGLSurfaceView(继承自GLSurfaceView)
里面。opengl的渲染,刷新都是有这个类来完成。所以我们不能直接在java方法里调用c++方法来刷新界面,唯一的方法就是绕开javaUI主线程,让GLSurfaceView来做这件工作。
ok,前面说到Cocos2dxGLSurfaceView类,它是cocos2d-x引擎的一部分,直接修改该类太粗暴。所以以下新建一个Class
TimerJavaToC.java以下只写核心方法
importorg.cocos2dx.lib.Cocos2dxActivity; importorg.cocos2dx.lib.Cocos2dxGLSurfaceView; publicclassTimerJavaToC { //定义native方法
privatestaticnativevoidjavaCallC();
privateCocos2dxGLSurfaceViewmGLSurfaceView=null; publicTimerJavaToC(Cocos2dxActivityact) { mGLSurfaceView=Cocos2dxGLSurfaceView.getInstance(); init(); } publicvoidcallCPP() { //这里使用Cocos2dxGLSurfaceView的queueEvent方法,把这个方法加到Cocos2dxGLSurfaceView的事件队列中,保证run运行的方法是在Cocos2dxGLSurfaceView线程中调用.具体用法还可以参见引擎的Cocos2dxGLSurfaceView.java类
mGLSurfaceView.queueEvent(newRunnable()
{
@Override
publicvoidrun()
{
//调用jni\
TimerJavaToC.javaCallC();
}
});
} }
相关文章推荐
- Cocos2d-x游戏开发之Cocos2dx通过JNI调用Android的Java代码(webView实例)
- 【iOS-cocos2d-X 游戏开发之十三】详细讲解在Xcode中利用预编译并通过Jni调用Android的Java层代码(cocos2dx里访问调用Android函数)!
- 【iOS-cocos2d-X 游戏开发之十三】详细讲解在Xcode中利用预编译并通过Jni调用Android的Java层代码(cocos2dx里访问调用Android函数)!
- 【COCOS2DX-ANDROID-游戏开发之二三】 界面中嵌入Android的WebView
- 【iOS-cocos2d-X 游戏开发之十三】cocos2dx通过Jni调用Android的Java层代码(上)
- 【iOS-cocos2d-X 游戏开发之十三】cocos2dx通过Jni调用Android的Java层代码(下)
- Android开发-将自定义View布局到Layout中并调用
- 【Android游戏开发十九】(必看篇)SurfaceView运行机制详解—剖析Back与Home按键及切入后台等异常处理!
- 【COCOS2DX-LUA 脚本开发之十四】解决自定义cpp类通过tolua++ binding LuaCocos2d后编译到Android运行黑屏(没有调用自定义cpp类)的问题!
- Android游戏开发之旅(六)自定义View
- Android游戏开发之构建游戏框架View与SurFaceView的区别
- 【Android游戏开发二十六】追加简述SurfaceView 与 GLSurfaceView效率!
- [android游戏开发初学]SurfaceView初探之缓冲区测试
- 编译类【COCOS2DX-LUA 脚本开发之十四】解决自定义CPP类通过TOLUA++ BINDING LUACOCOS2D后编译到ANDROID运行黑屏(没有调用自定义CPP类)的问题!
- 【Android游戏开发之六】无法在SurfaceView中添加组件的替代方法
- 【Android游戏开发之二】剖析游戏开发用view还是surfaceView
- 【COCOS2DX-LUA 脚本开发之十四】解决自定义CPP类通过TOLUA++ BINDING LUACOCOS2D后编译到ANDROID运行黑屏(没有调用自定义CPP类)的问题!
- Android游戏开发之SurfaceView的使用-android学习之旅(五)
- Android游戏开发之SurfaceView与游戏开发
- Android开发中的游戏开发使用View还是SurfaceView?