zoukankan      html  css  js  c++  java
  • 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);

    责任编辑:李孟


  • 相关阅读:
    Java实现 蓝桥杯 算法提高 小X的购物计划
    Java实现 蓝桥杯 算法提高 小X的购物计划
    Java实现 第十一届 蓝桥杯 (高职专科组)省内模拟赛
    Java实现 第十一届 蓝桥杯 (高职专科组)省内模拟赛
    Java实现 第十一届 蓝桥杯 (高职专科组)省内模拟赛
    Java 第十一届 蓝桥杯 省模拟赛 小明的城堡
    Java 第十一届 蓝桥杯 省模拟赛 小明的城堡
    Java 第十一届 蓝桥杯 省模拟赛 小明的城堡
    129. Sum Root to Leaf Numbers
    117. Populating Next Right Pointers in Each Node II
  • 原文地址:https://www.cnblogs.com/Z-XML/p/3400403.html
Copyright © 2011-2022 走看看