Cocos2d-x C++调用Android弹出提示框
来源:互联网 发布:win10看图软件 编辑:程序博客网 时间:2024/06/07 06:51
- Cocos2d-x C++调用Android弹出提示框
- Cocos2d-x中提供了一个JniHelper类来让我们对Jni进行操作。(PS:弄了一天想自己写代码操作Jni的,但是总是出错,技术差不得不使用Cocos2d-x现成的了)。我们有一个Android工程 :CocosDemoAndroid还有一个Win32工程:Cocos2dDemo.win32这个是必备的。。。在C++ Win32工程中有一个Scene,点击按钮调用Jni函数。[cpp]void CallJni::getInputCallBack(CCObject* pSender){g_AndroidPlatform.showDialog();}这个 g_AndroidPlatform.showDialog(); 在这个函数里面使用JniHelper类来使用Jni。[cpp]void AndroidPlatform::showDialog(){CCLog("showDialog");#ifdef ANDROID//下面是利用jnihelper类来调用Android StaticJniMethodInfo methodInfo; //jni函数信息结构体/*getStaticMethodInfo获取到MethodId和ClassId,ClassID通过穿进去的Activity即类名获取,MethodId通过函数名获取*/bool isHave=JniHelper::getStaticMethodInfo(methodInfo,"com/example/cocosdemoandroid/MainActivity","showMessage","()V");if(isHave){/*调用这个函数*/methodInfo.env->CallStaticVoidMethod(methodInfo.classID,methodInfo.methodID);}#endif}C++层关键的代码就是这两个了,在使用JniHelper的时候不要忘记加上头文件[cpp]#ifdef ANDROID#include<jni.h>#include"platform/android/jni/JniHelper.h"#endif下面来看Android层代码了。从上面的C++代码中也能看得出来工程包名 : com.example.cocosdemoandroidActivity:MainActivity[java]public class MainActivity extends Cocos2dxActivity {public static Context mContext;/*****消息类型****/private static final int SHOW_MESSAGE = 0;private static Handler handler=new Handler(){@Overridepublic void handleMessage(Message msg){//接受消息然后去做相应的事情if(msg.what==SHOW_MESSAGE){Log.d("CocosDemoAndroid", String.valueOf(msg.obj)); //获取到Handler传递的参数数据AlertDialog.Builder builder=new Builder(mContext);builder.setTitle("C++调用Android");builder.setMessage("C++调用Android显示弹出框");builder.show();}super.handleMessage(msg);}};@Overrideprotected void onCreate(Bundle savedInstanceState) {super.onCreate(savedInstanceState);mContext=MainActivity.this;}@Overridepublic boolean onCreateOptionsMenu(Menu menu) {// Inflate the menu; this adds items to the action bar if it is present.getMenuInflater().inflate(R.menu.main, menu);return true;}public static void showMessage(){Log.d("showMessage", "showMessage");Message msg=new Message();msg.what=SHOW_MESSAGE;msg.obj="showmessage demos"; //可以传递参数handler.sendMessage(msg);}public native int InitJni();static{System.loadLibrary("CocosDemo");}}对于Android:为什么要使用Handle sendMessage() ??因为如果直接在showMessage中弹出提示框,会崩溃提示 Can't create handle inside thread that has not called Looper.prepare()再附上的Android.mk文件:[cpp]LOCAL_PATH := $(call my-dir)RAKNET_LIB_PATH := ../../../../RakNet_PC-4.08/Android/obj/local/$(TARGET_ARCH_ABI)/libRakNet.a$(call import-add-path, $(Cocos2d)) \$(call import-add-path, $(Cocos2d)\cocos2dx\platform\third_party\android\prebuilt) \include $(CLEAR_VARS)LOCAL_MODULE := libRakNetLOCAL_SRC_FILES :=$(RAKNET_LIB_PATH)include $(PREBUILT_STATIC_LIBRARY)include $(CLEAR_VARS)LOCAL_MODULE := CocosDemo_sharedLOCAL_CFLAGS := -w -DANDROID -DRAPIDXML_NO_EXCEPTIONSLOCAL_MODULE_FILENAME := libCocosDemoLOCAL_SRC_FILES := jni.cpp \../../Classes/TristanaLayer.cpp \../../Classes/AppDelegate.cpp \../../Classes/HelloWorldScene.cpp \../../Classes/CControlTest.cpp \../../Classes/CocosDemoMenu.cpp \../../Classes/CCScrollViewTest.cpp \../../Classes/CocosRakNet.cpp \../../Classes/MissCardSprite.cpp \../../Classes/MoveWithMouse.cpp \../../Classes/TransCards.cpp \../../Classes/AndroidPlatform.cpp \../../../public/network/MissGameNetWork.cpp \../../Classes/CallJni.cppLOCAL_C_INCLUDES := $(LOCAL_PATH)/../../Classes \$(LOCAL_PATH)/../../../public \$(LOCAL_PATH)/../../../public/network \$(RakNet)/Source \$(Cocos2d)/cocos2dx \$(Cocos2d)/cocos2dx/include \$(Cocos2d)/cocos2dx/kazmath/include \$(Cocos2d)/cocos2dx/platform/android \$(Cocos2d)/cocos2dx/platform/third_party/android \$(Cocos2d)/external \$(Cocos2d)/CocosDenshion/include \$(Cocos2d)/CocosDenshion/android \$(Cocos2d)/extensions \$(Cocos2d)/extensions/GUI/CCControlExtension \LOCAL_STATIC_LIBRARIES := libRakNetLOCAL_WHOLE_STATIC_LIBRARIES := cocos2dx_static cocosdenshion_static cocos_extension_staticinclude $(BUILD_SHARED_LIBRARY)$(call import-module,CocosDenshion/android) \$(call import-module,cocos2dx) \$(call import-module,extensions)
- 转载地址:http://www.2cto.com/kf/201309/244504.html
0 0
- Cocos2d-x C++调用Android弹出提示框
- Cocos2d-x C++调用Android弹出提示框
- cocos2d-x lua 弹出框
- Android Notification 手机系统横幅弹出提示框调用
- Android 弹出提示框
- android 弹出提示框
- Android弹出提示框
- android 弹出提示框
- cocos2d-x bindings-generator(lua调用c++)
- cocos2d-x bindings-generator(lua调用c++)
- cocos2dx-3.x: lua 弹出提示框
- Cocos2d-x 调用 Android 代码的后续
- cocos2d-x android c++调用java
- cocos2d-x android java调用C++
- Cocos2d-x 调用 Android 代码的后续
- 简析 cocos2d-x Android 调用启动过程
- Android中的弹出提示框
- Android中的弹出提示框
- java反射的作用------hibernate插入功能的j简单实现
- UnityEditor扩展编辑器实现从场景中渲染得到Cubemap
- 数据结构--二叉树实例分析
- 二、Linux/UNIX操作命令积累【mkdir、groupadd、groupdel、useradd、userdel】
- zoj3818- Pretty Poem(爆枚型字符串题)
- Cocos2d-x C++调用Android弹出提示框
- cloudstack的manager端自动部署shell脚本
- Inside Geometry Instancing(下)
- C语言类函数宏和一般函数的区别
- 【HDU4991】dp 树状数组优化
- 反射的作用之spring的简单模拟
- 在struts-config.xml配置文件顺序异常的问题
- Oracle的性能优化
- 文件描述符与文件指针等文件操作的几个问题