Cocos2d-x调用Java最终实例代码

cocos2d-x和android相互调用 1.准备环境工作,在项目目录下新建自己的MyApplication,MyActivity,MyAllSdk,MyBroadcastReceiver的java文件:在MyApplication.Java中添加代码:package com.OYHP; import android.app.Application; public class MyApplication extends Applica... 阅读详情

HelloWorldScene.cpp

#include "HelloWorldScene.h"
#include "SimpleAudioEngine.h"

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include <jni.h>
#include "platform/android/jni/JniHelper.h"
#include <android/log.h>
#endif

using namespace cocos2d;
using namespace CocosDenshion;

CCScene* HelloWorld::scene()
{
    // 'scene' is an autorelease object
    CCScene *scene = CCScene::create();
    
    // 'layer' is an autorelease object
    HelloWorld *layer = HelloWorld::create();

    // add layer as a child to scene
    scene->addChild(layer);

    // return the scene
    return scene;
}

// on "init" you need to initialize your instance
bool HelloWorld::init()
{
    //////////////////////////////
    // 1. super init first
    if ( !CCLayer::init() )
    {
        return false;
    }

    /////////////////////////////
    // 2. add a menu item with "X" image, which is clicked to quit the program
    //    you may modify it.

    // add a "close" icon to exit the progress. it's an autorelease object
    CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
                                        "CloseNormal.png",
                                        "CloseSelected.png",
                                        this,
                                        menu_selector(HelloWorld::menuCloseCallback) );
    pCloseItem->setPosition( ccp(CCDirector::sharedDirector()->getWinSize().width - 20, 20) );

    // create menu, it's an autorelease object
    CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
    pMenu->setPosition( CCPointZero );
    this->addChild(pMenu, 1);

    /////////////////////////////
    // 3. add your codes below...

    // add a label shows "Hello World"
    // create and initialize a label
    CCLabelTTF* pLabel = CCLabelTTF::create("Hello World", "Thonburi", 34);

    // ask director the window size
    CCSize size = CCDirector::sharedDirector()->getWinSize();

    // position the label on the center of the screen
    pLabel->setPosition( ccp(size.width / 2, size.height - 20) );

    // add the label as a child to this layer
    this->addChild(pLabel, 1);

    // add "HelloWorld" splash screen"
    CCSprite* pSprite = CCSprite::create("HelloWorld.png");

    // position the sprite on the center of the screen
    pSprite->setPosition( ccp(size.width/2, size.height/2) );

    // add the sprite as a child to this layer
    this->addChild(pSprite, 0);
    
    // JNI call test
#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)

	//////////////////////////////////////////////////////////////////
	// #1 : 静态,无参数,无返回值
	// #2 : 静态,有参数,无返回值
	// #3 : 静态,有参数,有返回值
	// #4 : 非静态,无参数,无返回值
	// #5 : 非静态,有参数,无返回值
	// #6 : 非静态,有参数,有返回值
	//////////////////////////////////////////////////////////////////
	
    JniMethodInfo minfo;
    
    // #1
	if (JniHelper::getStaticMethodInfo(minfo,"com/chen/FunctionTester",
		"TF_S_NP_NR", "()V"))
	{
        minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID);
    }
    
    // #2
    if(JniHelper::getStaticMethodInfo(minfo, "com/chen/FunctionTester",
		"TF_S_HP_NR","(I)V")) 
    {    
        minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID,5);  
    }  
    
    // #3
    if (JniHelper::getStaticMethodInfo(minfo, "com/chen/FunctionTester",
		"TF_S_HP_HR","(I)I"))
	{
		jint __result;
		__result = minfo.env->CallStaticIntMethod(minfo.classID, minfo.methodID, 5);
	}
	
	// 非静态方法的调用需要从一个静态方法中获得非静态方法所属的对象。也就是说,调用了一
	// 个返回值类型为java.lang.Object的静态方法
	jobject jobj;
	
	// #4
	if (JniHelper::getStaticMethodInfo(minfo, "com/chen/FunctionTester", 
		"getInstance", "()Ljava/lang/Object;"))
	{
		jobj = minfo.env->CallStaticObjectMethod(minfo.classID, minfo.methodID);
		if (JniHelper::getMethodInfo(minfo, "com/chen/FunctionTester",
			"TF_US_NP_NR", "()V"))
		{
			 minfo.env->CallVoidMethod(jobj, minfo.methodID);
		}
	}
	                                           
#endif
    
    
    return true;
}

void HelloWorld::menuCloseCallback(CCObject* pSender)
{
    CCDirector::sharedDirector()->end();

#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    exit(0);
#endif
}

FunctionTester.java

package com.chen;

public class FunctionTester {
	
	// 在调用非静态方法的时候,需要获得方法属于哪一个对象,所以必须有一个静态的实例。
	// 而且,这个实例没有办法直接访问,所以必须定义一个静态方法来获得这个实例
	// 这个实例必须以Object类型进行输出
	public static FunctionTester tester = null;
	public static Object getInstance(){
		if (tester == null){
			tester = new FunctionTester();
		}
		return tester;
	}

	/////////////////////////////////////////////////////////////////////////
	// #1 : 静态,无参数,无返回值
	// #2 : 静态,有参数,无返回值
	// #3 : 静态,有参数,有返回值
	// #4 : 非静态,无参数,无返回值
	// #5 : 非静态,有参数,无返回值
	// #6 : 非静态,有参数,有返回值
	/////////////////////////////////////////////////////////////////////////
	
	// #1
	public static void TF_S_NP_NR(){
		System.out.println("CALLED: TF_S_NP_NR"); 
	}
	
	// #2
	public static void TF_S_HP_NR(int _para){
		System.out.println("CALLED: TF_S_HP_NR, PARA: " + _para);
	}
	
	// #3
	public static int TF_S_HP_HR(int _para){
		System.out.println("CALLED: TF_S_HP_HR, PARA: " + _para);
		return 0;
	}
	
	// #4
	public void TF_US_NP_NR(){
		System.out.println("CALLED: TF_US_NP_NR");
	}
	
	// #5
	public void TF_US_HP_NR(int _para){
		System.out.println("CALLED: TF_US_HP_NR, PARA: " + _para);
	}
	
	// #6
	public int TF_US_HP_HR(int _para){
		System.out.println("CALLED: TF_US_HP_HR, PARA: " + _para);
		return 0;
	}
}




Cocos2d-x与Android利用JNI相互调用 Cocos与Android利用JNI相互调用 阅读详情

相关推荐

【cocos2d-x 7】介绍两本关于cocos2d-x开发的书籍

从学习cocos2d-x以来,买了几本书 1  Cocos2d-x 3.X手游开发实例详解 http://product.dangdang.com/23563764.html 2 Cocos2d-x高级开发教程:制作自己的《捕鱼达人》 http://product.dangdang.com/snapshot.php?product_id=23253529&version=3:6-2:1

HongHuer的专栏 5636

cocos2d-x调用java接口详解

cocos2d-x调用java接口 1. jni.h , F:\cocos2d-x-3.2\cocos\platform\android\jni\jni\JniHelper.h 2. 如果jni.h没有,去C:\Program Files\Java\jdk1.7.0_05\include\jni.h and C:\Program Files\Java\jdk1.7.0_05\include\win32\jni_md.h copy to VS setup path VC/include 3. 4.

翻肚鱼儿的博客 689

cocos2dx android编译java文件

cocos2dx android编译用java文件

Cocos2d-x调用Java

本站文章均为 李华明Himi 原创,转载务必在明显处注明: 转载自【黑米GameDev街区】原文链接: http://www.himigame.com/android-game/725.html 很多看过之前Himi的【iOS-cocos2d-X 游戏开发之七】整合Cocos2dX的Android项目到Xcode项目中,Xcode编写&编译代码,Android导入打包运行即可! 博

StupidCodeGenerator的专栏 5821

cocos2dx与java之间的相互调用

为cocos2dx接移动sdk的时候 常常要处理回调函数 需要相互调用

cocos2dx 3.3工程,C++通过JNI与Java相互调用

最近游戏中要接入移动MM的SDK,研究了下c++与Java的相互调用,cocos2dx3.3的工程。新建一个工程,把class和proj.android覆盖可以导入eclipse下跑了。

Cocos2d-x利用jni调用java层代码

jni的意思是java本地调用,通过jni可以实现java层代码和其他语言写得代码进行交互。在cocos2d-x中,如果想要在c++层调用java层的代码,就是通过jni技术。通过调用java层的代码,我们就可以在Android平台下实现一些引擎没有提供给我们的功能,或者做一些其他的功能。比如加个广告,加个分享,调用Android原生的对话框等等吧。Cocos2d-x比较人性化的是为我们封装了jn

Future Of Magic 9807

Cocos2d-Java跨平台游戏引擎

Cocos2d-Java是基于Cocos2d-X,使用Java语言来开发Cocos2d跨平台游戏的引擎, 和-lua,-js 的api风格相近,方便快捷,便于习惯Java的开发者开发跨平台游戏;

cocos 调用java_cocos2dx 调用java层代码

1.导入头文件#if(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)#include #include "android/log.h"#include "platform/android/jni/JniHelper.h"#endif2.详尽代码JniMethodInfo minfo;//JniHelper/* 测试用方法 *//*bool isHave = J...

weixin_39766910的博客 301

cocos2d-x 通过JNI实现c/c++和Android的java层函数互调-源码

cocos2d-x 通过JNI实现c/c++和Android的java层函数互调-源码 详情请移步到:http://codingnow.cn/program/992.html

FAGLB03余额显示异常排查与修复指南

本文针对SAP新总账中FAGLB03报表余额显示异常问题,提供了专业的排查与修复指南。文章深入剖析了数据不一致的核心原因,如FAGLFLEXT汇总表与凭证明细不同步、年度余额结转(FAGLGVTR)失败等,并详细介绍了使用FAGLF03进行精准诊断、通过SE38执行标准调整程序TFC_ADJUST_VZ进行修复的标准操作流程,帮助用户快速恢复数据一致性,确保财务报表的准确性。

weixin_29313423的博客 307

cocos2dx java混编_cocos2dx java调用c++

搜索热词在做支付接入时,大都采用cocos2d-x 的jnihelper调用java实现接入,但光c++调java是不够的, 如第三方写的支付接口 支付成功了他们有一个onSuccess事件,可是这个方法是写在java端的AppActivity.java里的,但实际给用户加钱是写在cocos2d-x c++工程里的,java怎么通知c++工程支付成功了?发消息显然不可能,sdk没提供这个接口,只好...

weixin_36185512的博客 360

开源PACS系统Orthanc(DICOM服务器)配置

PACS(Picture Archiving and Communication System)是医学影像的数字化存储、检索和传输系统,用于管理和存储医学图像和相关信息,如放射学、核医学、超声、病理学等各种医学影像。PACS系统通过数字化技术取代了传统的胶片方式,使医疗机构能够更高效地存储、传输和查看医学图像,从而提高了医疗图像的管理和工作流程。

qq_42231043的博客 6249

cocos-java实例_Cocos2d-x调用Java最终实例代码

HelloWorldScene.cpp#include "HelloWorldScene.h"#include "SimpleAudioEngine.h"#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)#include #include "platform/android/jni/JniHelper.h"#include #endifusing nam...

weixin_35183690的博客 320

Android车载桌面开发实战:从CarLauncher源码解析到自定义Launcher开发(Android 11)

本文深入解析了Android 11中CarLauncher的源码架构与核心模块,并提供了从零开始定制开发车载Launcher的完整实战指南。内容涵盖车载桌面的独特定位、驾驶场景优化、多屏协同、动态内容嵌入等核心挑战,以及如何构建符合安全规范、体验流畅的自定义车载桌面应用,是车载应用开发者提升系统级定制能力的实用参考。

weixin_29266647的博客 515

OSGEarth 基于鼠标位置缩放

说明 osgearth 原有漫游器EarthManipulator 不支持此功能,所以需要修改此漫游器代码,其中主要原理就是在缩放的同时也要改变当前漫游器中心焦点的位置,从而保持鼠标指定点的位置缩放是不改变。 核心代码修改部分 EarthManipulator 的头文件zoom方法添加参数view /** * Zoom the camera using delt...

Rsoftwaretest的专栏 3781

C++ 调用 Java Cocos2d-x利用jni调用java层代码

JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)所以我们需要引用JNI头文件。(引入前做一下平台判断) #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) #include #include "platform/android/jni/JniHelper.h"

zhanghow的博客 603

仿真学习系列(二):ADS仿真直观理解方波与频谱分量的关系

在高速电路设计中,我们常常听到一句话:“信号其实不是电压在传输,而是频率在传播。” 这句话看似抽象,却揭示了信号世界的核心本质——任何时域波形,都可以被拆解为一系列不同频率的正弦波。 那么,一个看似简单的方波,究竟由哪些频率成分组成?为什么在示波器上,有的方波上升沿又快又“方”,而有的却“圆润”得多?这些差异背后,隐藏的正是高频分量的力量。 本文将通过使用 Keysight ADS,从零搭建仿真电路,直观地观察方波与其谐波成分之间的关系。

案例文章,高速信号 813

cocos2d-x 中多线程的c/c++代码通过JNI调用java代码

Cocos2dx 的多线程c/c++通过JNI调用java的代码

wu4long的专栏 4486

QMK固件OLED显示屏配置教程:从零开始实现个性化键盘显示(实操部分)

本教程详细介绍了如何从零开始配置QMK固件的OLED显示屏,实现个性化键盘显示。首先,文章解释了OLED显示屏的基本概念及其在键盘中的应用,并介绍了I2C和SPI两种通信方式。接着,教程逐步指导用户如何在QMK固件中启用OLED功能,包括在rules.mk中启用OLED、在halconf.h和mcuconf.h中配置I2C功能,以及在config.h中设置I2C和OLED参数。最后,教程展示了如何在keymap.c中编写代码,实现OLED显示内容,并提供了进阶定制功能,如显示当前层信息、按键状态和QMK L

Despacito0o的博客 579

第29章:PCL PrincipalCurvatures 曲率估计

PrincipalCurvatures(主曲率估计)是一种用于计算点云表面曲率的算法。曲率描述了曲面局部的弯曲程度,是表面几何特征的重要指标。在点云处理中,估计表面的曲率对于形状分析、物体识别、表面重建等任务非常重要。主曲率是曲面上某一点的最大和最小曲率方向。通过计算点云的主曲率,我们可以获得点云中每个点的局部形状特征。通常情况下,主曲率包括两个主要参数:最大主曲率(最大曲率方向上的曲率)和最小主曲率(最小曲率方向上的曲率)。优点缺点提供了对点云表面局部形状的深入分析。

yumeiguo的博客 211

cocos2d-x c 调用java_cocos2d-x中使用JNI的调用JAVA方法

用cocos2d-x发布Android项目时,都应该知道要用JAVA与C/C++进行交互时会涉及到JNI的操作(Java Native Interface)。JNI是JAVA的一个通用接口,旨在本地化语言(如CC++)与JAVA语言进行交互,在交互过程成中,JAVA调用的是已编译好的本地化语言的二进制代码(如Windows下的dll,Linux下的so文件),所以在交叉编译时看到Eclipse的控...

weixin_35049095的博客 285

把数据库算力拉满的 ABAP CDS Table Function:从语法、权限到可运行样例的全景解析

文章摘要: 本文针对ABAP开发者探讨了CDS Table Function的应用场景与实现细节。当CDS View无法处理复杂计算(如窗口函数、递归等)时,可通过Table Function将逻辑下推到HANA数据库执行。关键点包括:1)CDS实体声明与AMDP实现的协作关系;2)多租户环境下的Client处理机制(@ClientHandling.type注解);3)激活与传输的阶段性特点可能导致的"暂不可用"问题;4)基于SFLIGHT的完整示例,展示如何定义Client依赖函数、实

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 299

cocos java调用c_cocos2d-x 中java调用c/c++函数

cocos2d-x 中java调用c/c++函数这个是在JniHelper的基础上添加的,可以对比者看,java中的函数是backAction,主要调用的函数JNIEXPORT void JNICALL Java_org_cocos2dx_Game_JavaHelper_backAction(JNIEnv *env, jobject thiz, jstring key, jstring messa...

weixin_30305727的博客 201

IMSL CNL 7.0.0 (x86-64)Crack

IMSL CNL 7.0.0 (x86-64)Crack intel的算法库破解文件,这是C++版本的破解文件

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

上一篇: 开始编写Cocosd-x对Java进行调用的测试代码
下一篇: Dialog not displaying when calling from JNI
垃圾桶
博客等级 码龄15年 20粉丝 18原创
评论 6
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值