Z.XML-Cocos2d-x开发笔记

大家都在热火朝天的使用Cocos2d-x引擎做游戏开发,那么大家不妨把过程中解决的关键问题记录在这里,做一个分享!


 

1、在Android平台下打开网页

1.1修改项目工程源文件 

  在你的项目工程源文件中(比如AboutScene.cpp)开头加入如下代码

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

 后在你所想进行打开网页操作的地方加入如下{#if...#endif}部分的代码。笔者放在了About类的一个回调函数里。将能实现点击相应按钮,调用该回调函数,打开网页。

void About::contactCallback(CCObject* pSender)
{
     #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)
    //定义Jni函数信息结构体
    JniMethodInfo minfo;
    bool isHave = JniHelper::getStaticMethodInfo(minfo,"org/cocos2dx/lib/Cocos2dxActivity","openUrl", "()V");
    if (isHave)
    {
        minfo.env->CallStaticVoidMethod(minfo.classID, minfo.methodID);
    }
    #endif
}

这里主要说下getStaticMethodInfo。

第二个参数,是类名,第三个参数是函数名(该类和函数将在1.2中出现)第四个参数表示该函数没有返回值。

可参见http://blog.csdn.net/xiaominghimi/article/details/7602984

1.2修改java源文件

在proj.android\src\org\cocos2dx\lib中找到Cocos2dxActivity.java文件。在文件中加入以下代码

public static void openUrl( )
    {
        Uri uri = Uri.parse(http://www.cnblogs.com/z-xml");
    Intent it
= new Intent(Intent.ACTION_VIEW,uri);
     sContext.startActivity(it);

}

其中 sContext指this。可在该java文件的protected void onCreate()方法里看到:sContext = this;如果你的是其他名字,做相应修改即可。

这样就成功了!

事实上,这就是在cocos2d-x里调用android响应的代码案例,不单单只是打开网页。

若要调android里的静态方法,将JniHelper::getStaticMethodInfo改为JniHelper::getMethodInfo即可(即去掉"static")。

责任编辑:李孟


 2 截屏

  在Cocos2d-x中实现截屏通常使用CCRenderTexture。

  CCRenderTexture可以创建一张空白的画纸,然后使用begin()方法开始记录,其他的CCNode通过visit()方法在画纸上留下当前自己的痕迹,CCRenderTexture使用end()方法停止记录。下面的代码将生成screenShot.png,并提示"screenShot Succeed!"。图片文件生成你工程的rescourse里。

 

     CCSize size = CCDirector::sharedDirector()->getWinSize();
         CCRenderTexture* screen = CCRenderTexture::create(size.width, size.height);
         CCScene* temp = CCDirector::sharedDirector()->getRunningScene();
         screen->begin();
         temp->visit();
         screen->end();
         if(screen->saveToFile("screenShot.png")) {
              CCMessageBox("screenShot Succeed!", "Hit"); } 
     CC_SAFE_DELETE(screen);

 

责任编辑:李孟


 

posted @ 2013-10-31 22:10  Z.XML  阅读(230)  评论(0编辑  收藏  举报