cocos2dx 弹出 android 对话框
来源:互联网 发布:阿里旺旺国际版 mac 编辑:程序博客网 时间:2024/05/20 09:26
参考链接: http://www.2cto.com/kf/201410/347637.html
1: android端 proj.android/jni/hellocpp/ 下新建MyDialog类
//test.h#ifndef _MyDialog_H_#define _MyDialog_H_extern "C"{void showExitDialog(const char* title,const char* msg);}#endif
//MyDialog.cpp#include "MyDialog.h"#include "cocos2d.h"#include "platform/android/jni/JniHelper.h"//引擎提供的JniHelper类#include "../../../Classes/JNI/JniDialog.h"//相对路径,上一步在Xcode中创建的类#define CLASS_NAME "org/cocos2dx/cpp/JniDialogHelper"//这步的路径即是上面红线的路径,很重要using namespace cocos2d;extern "C"{//下面的函数通过Jni调用Java层的函数。//在HelloWorldScene中调用该处的此函数,此函数在通过Jni传到Java层 //调用Java层JniTestHelper.java中的showExitDialog函数void showExitDialog(const char* title,const char* msg){JniMethodInfo t;//该函数的意思就是,寻找org/cocos2dx/cpp/JniTestHelper类中有无静态函数showExitDialog,暂时还没有放出JniTestHelper的代码,稍后。if(JniHelper::getStaticMethodInfo(t,CLASS_NAME,"showExitDialog","(Ljava/lang/String;Ljava/lang/String;)V")){jstring jTitle = t.env->NewStringUTF(title);jstring jMsg = t.env->NewStringUTF(msg);t.env->CallStaticVoidMethod(t.classID,t.methodID,jTitle,jMsg);t.env->DeleteLocalRef(jTitle);t.env->DeleteLocalRef(jMsg);}}//以下两个函数,是通过Jni调用C++层的setPackageName和exitApp,Java层的两个函数在JniTestHelper中定义,参数通过JNIEnv传入void Java_org_cocos2dx_cpp_JniDialogHelper_setPackageName(JNIEnv* env,jobject thiz,jstring packageName){//utf-8const char* pkgName = env->GetStringUTFChars(packageName,NULL);setPackageName(pkgName);//C++层代码env->ReleaseStringUTFChars(packageName,pkgName);}void Java_org_cocos2dx_cpp_JniDialogHelper_exitApp(JNIEnv* env,jobject thiz){exitApp();//C++层代码}}
2: cocos2dx目录 Classes/JNI/ 下新建JniDialog类#pragma once#ifndef __JniDialog__#define __JniDialog__#include "cocos2d.h"USING_NS_CC;/*退出对话框@date : 2016.09.26*/void setPackageName(const char* packageName)//从Java层传过来的包名在此处打印出来{log("packageName = %s", packageName);}void exitApp()//Java层调用C++层的该函数,关闭程序。{Director::getInstance()->end();}#endif3: coocs端使用如下://头文件包含,判断平台
#if(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
#include "../../../proj.android/jni/hellocpp/MyDialog.h" //一定是相对路径
#endifvoid Game::onKeyReleased(EventKeyboard::KeyCode keycode, Event* event){auto dictionary = Dictionary::createWithContentsOfFile("xml/jni/ExitApp.xml");const char* title = ((CCString*)dictionary->objectForKey("dialog_title"))->getCString();const char* message = ((CCString*)dictionary->objectForKey("dialog_message"))->getCString();FileUtils::getInstance()->getWritablePath();switch (keycode){case EventKeyboard::KeyCode::KEY_BACK:{#if(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) //showExitDialog("Exit", "Are you sure to Exit"); /* jni返回给java的字符串,c/c++首先应该负责把这个字符串变成UTF-8或者UTF-16格式, 然后通过NewStringUTF或者NewString来把它封装成jstring,返回给java就可以了。 */ showExitDialog(title, message);#endif#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS) exit(0);#endif}break;default:break;}}
0 0
- cocos2dx 弹出 android 对话框
- cocos2dx android返回键- 弹出退出对话框
- cocos2dx 由小到大弹出对话框
- Cocos2dx制作抖动弹出对话框效果
- Cocos2dx: 弹出对话框的设计与实现
- Cocos2dx制作抖动弹出对话框效果
- Cocos2dx: 弹出对话框的设计与实现
- android 弹出对话框 弹出自定义对话框
- android弹出对话框
- Android 弹出对话框Dialog
- Android 弹出对话框Dialog
- Android弹出自定义对话框
- android弹出对话框
- android弹出对话框
- Android-PopupWindow弹出对话框
- android普通弹出对话框
- Android popupwindow弹出对话框
- Android弹出对话框实例
- 密码学:用例子和程序说明RSA算法过程
- c#知识点
- border-radius 详细用法解析(demo示例)绝大部分图形都有
- 133UVa救济金发放——不用链表
- 转载:Tegra TK1刷机 版本R21.4
- cocos2dx 弹出 android 对话框
- 处理BigDecimal非整除异常
- hdu_2222 Keywords Search(AC自动机)
- ROS hydro turtlebotArm相关网址总结
- 【Linux】linux常用基本命令
- day7 part2:JavaScript DOM编程学习笔记01
- 高效搜索
- java.io.IOException: Could not locate executable null\bin\winutils.exe in the Hadoop binaries
- 3D打印机shader特效简单实现