cocos2dx在c++中进行Android界面的跳转

在使用Cocos2dx进行Android开发的时候,有时候想在c++中使用java编写的本地界面,并进行跳转

首先在Android中添加本地activity:

package org.cocos2dx.cpp;

import android.app.Activity;
import android.os.Bundle;

public class CocoActivity extends Activity {

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// Todo Auto-generated method stub
		
		super.onCreate(savedInstanceState);
	}

}

不要忘记在添加以下注册activity的代码

<activity android:name="org.cocos2dx.cpp.CocoActivity"></activity>


本地有一个和Cocos2dx绑定的界面AppActivity:

在AppActivity中添加如下代码


public class AppActivity extends Cocos2dxActivity {
	static AppActivity context;//声明静态变量代表本界面

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		// Todo Auto-generated method stub
		super.onCreate(savedInstanceState);
		context = this;//此处为问题关键把本界面赋值给静态变量,以便获取本变量
	}
       /*本静态方法用来获取本界面*/
	public static Object getCon() {
		return context;
	}

        /*该非静态方法用来进行页面跳转*/
	public void startActivity() {

		Intent intent = new Intent(this,Coco.class);
		startActivity(intent);

	}
}

以下是在c++中添加代码


JniMethodInfo minfo;
	bool isHave = JniHelper::getStaticmethodInfo(minfo,/*JniMethodInfo的引用*/
			"org/cocos2dx/cpp/AppActivity",/*类的路径*/
			"getCon",/*函数名*/
			"()Ljava/lang/Object;");/*函数类型简写*/
	jobject activityObj;//调用静态方法获取跳转的界面的object
	if (isHave) {
				//CallStaticObjectMethod调用java函数,并把返回值赋值给activityObj
				activityObj = minfo.env->CallStaticObjectMethod(minfo.classID,minfo.methodID);
			}
		isHave = JniHelper::getmethodInfo(minfo,/*JniMethodInfo的引用*/
		"org/cocos2dx/cpp/AppActivity",/*类的路径*/
		"startActivity",/*函数名*/
		"()V");/*函数类型简写*/
        
		if (isHave) {
			//CallStaticObjectMethod调用java函数,并把返回值赋值给activityObj
			minfo.env->CallVoidMethod(activityObj,minfo.methodID);//通过获取的object调用非静态方法来进行界面跳转
		}





相关文章

    本文实践自 RayWenderlich、Ali Hafizji 的文章《...
Cocos-code-ide使用入门学习地点:杭州滨江邮箱:appdevzw@1...
第一次開始用手游引擎挺激动!!!进入正题。下载资源1:从C...
    Cocos2d-x是一款强大的基于OpenGLES的跨平台游戏开发...
1.  来源 QuickV3sample项目中的2048样例游戏,以及最近《...
   Cocos2d-x3.x已经支持使用CMake来进行构建了,这里尝试...