博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Z.XML-Cocos2d-x开发笔记
阅读量:4694 次
发布时间:2019-06-09

本文共 2035 字,大约阅读时间需要 6 分钟。

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


 

1、在Android平台下打开网页

1.1修改项目工程源文件 

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

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)#include 
#include "platform/android/jni/JniHelper.h"#include
#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中出现)第四个参数表示该函数没有返回值。

可参见

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);

 

责任编辑:李孟


 

转载于:https://www.cnblogs.com/Z-XML/p/3400403.html

你可能感兴趣的文章
又一道软通动力7K月薪面试题——银行业务调度系统
查看>>
Matlab画图-非常具体,非常全面
查看>>
ReactJS入门
查看>>
linux网站配置文件.htaccess伪静态转换到IIS web.config中
查看>>
CodeForces 1B
查看>>
win10应用UserControl
查看>>
BZOJ4516: [Sdoi2016]生成魔咒(后缀自动机)
查看>>
查看手机已经记住的WIFI密码
查看>>
最新版IntelliJ IDEA2019 破解教程(2019.08.07-情人节更新)
查看>>
我是怎么用缠论在商品里边抢钱之二 (2019-07-12 15:10:10)
查看>>
python入门之正则表达式
查看>>
SAS学习经验总结分享:篇五-过程步的应用
查看>>
Android创建文件夹及文件并写入数据
查看>>
file的getPath getAbsolutePath和getCanonicalPath的不同
查看>>
课时4—切入切出动画
查看>>
eclipse 编辑 python 中文乱码的解决方案
查看>>
Python 爬虫的集中简单方式
查看>>
数据库MySQL/mariadb知识点——触发器
查看>>
Ubuntu做Tomcat服务:insserv: warning: script 'tomcat' missing LSB tags and overrides
查看>>
Binary Agents
查看>>