您的位置:首页 > 移动开发 > Cocos引擎

【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以下只写核心方法



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();

}

});
}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐