【COCOS2DX-ANDROID-游戏开发之二二】之 调用Cocos2dxGLSurfaceView

原文地址:http://www.cnblogs.com/howeho/p/3317339.html


前面博客说到,cocos2d-x c++界面层运行在一个GLThread线程里面,严格的说是运行在Cocos2dxGLSurfaceView(继承自GLSurfaceView

里面。opengl的渲染,刷新都是有这个类来完成。 所以我们不能直接在java方法里调用c++方法来刷新界面,唯一的方法就是绕开javaUI主线程,让GLSurfaceView来做这件工作。

ok,前面说到 Cocos2dxGLSurfaceView 类,它是cocos2d-x引擎的一部分,直接修改该类太粗暴。所以以下新建一个Class 

TimerJavaToC.java 以下只写核心方法

复制代码
import org.cocos2dx.lib.Cocos2dxActivity;

import org.cocos2dx.lib.Cocos2dxGLSurfaceView;

public class TimerJavaToC 

{

 //定义native方法 

    private static native void javaCallC();


  private Cocos2dxGLSurfaceView mGLSurfaceView = null;

public TimerJavaToC(Cocos2dxActivity act)
{

mGLSurfaceView = Cocos2dxGLSurfaceView.getInstance();
init();

}
public void callCPP()
{
  
          //这里使用Cocos2dxGLSurfaceView的queueEvent方法,把这个方法加到Cocos2dxGLSurfaceView的事件队列中,保证run运行的方法是在Cocos2dxGLSurfaceView线程中调用 .具体用法还可以参见引擎的Cocos2dxGLSurfaceView.java类
 

                mGLSurfaceView.queueEvent( new Runnable()

 
 

                {

 
 

                @Override

 
 

                public void run() 

 
 

                {

 
 

                //调用jni \

               TimerJavaToC.javaCallC();

 
 

                }

 
 

                });

}

}
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值