• 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.androidsrcorgcocos2dxlib中找到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);

    责任编辑:李孟


  • 相关阅读:
    Supervisor安装与使用
    windows常用快捷键和指令
    搜索引擎使用技巧
    golang核心Goroutine和channel
    4、小程序原生底部菜单
    三、小程序值使用vant开发
    axios请求2
    3、小程序消息推送
    居中
    一、底部菜单
  • 原文地址:https://www.cnblogs.com/Z-XML/p/3400403.html
Copyright © 2020-2023  润新知