Cocos2d-x C++调用Android弹出提示框
来源:未知 责任编辑:责任编辑 发表时间:2013-11-18 20:55 点击:次
Cocos2d-x中提供了一个JniHelper类来让我们对Jni进行操作。
p>
p>(PS:弄了一天想自己写代码操作Jni的,但是总是出错,技术差不得不使用Cocos2d-x现成的了)。
p>
p>
p>我们有一个Android工程 :CocosDemoAndroid
p>
p>还有一个Win32工程:Cocos2dDemo.win32
p>
p>这个是必备的。。。
p>
p>
p>在C++ Win32工程中有一个Scene,点击按钮调用Jni函数。
p>
p>[cpp]
p>void CallJni::getInputCallBack(CCObject* pSender)
p>{
p> g_AndroidPlatform.showDialog();
p>
p>}
p>
p>这个 g_AndroidPlatform.showDialog(); 在这个函数里面使用JniHelper类来使用Jni。
p>
p>[cpp]
p>void AndroidPlatform::showDialog()
p>{
p> CCLog("showDialog");
p>
p>#ifdef ANDROID
p> //下面是利用jnihelper类来调用Android Static
p> JniMethodInfo methodInfo; //jni函数信息结构体
p> /*getStaticMethodInfo获取到MethodId和ClassId,ClassID通过穿进去的Activity即类名获取,MethodId通过函数名获取*/
p> bool isHave=JniHelper::getStaticMethodInfo(methodInfo,"com/example/cocosdemoandroid/MainActivity","showMessage","()V");
p> if(isHave)
p> {
p> /*调用这个函数*/
p> methodInfo.env->CallStaticVoidMethod(methodInfo.classID,methodInfo.methodID);
p> }
p>
p>#endif
p>}
p>
p>C++层关键的代码就是这两个了,在使用JniHelper的时候不要忘记加上头文件
p>[cpp]
p>#ifdef ANDROID
p>#include<jni.h>
p>#include"platform/android/jni/JniHelper.h"
p>#endif
p>
p>
p>下面来看Android层代码了。
p>
p>从上面的C++代码中也能看得出来
p>
p>工程包名 : com.example.cocosdemoandroid
p>
p>Activity:MainActivity
p>
p>[java]
p>public class MainActivity extends Cocos2dxActivity {
p>
p> public static Context mContext;
p>
p>
p>
p> /*****消息类型****/
p> private static final int SHOW_MESSAGE = 0;
p>
p> private static Handler handler=new Handler()
p> {
p> @Override
p> public void handleMessage(Message msg)
p> {
p> //接受消息然后去做相应的事情
p> if(msg.what==SHOW_MESSAGE)
p> {
相关新闻>>
最新推荐更多>>>
- 发表评论
-
- 最新评论 更多>>