Cocos2dx-demo演示项目:Part1

  这个项目,我主要是用来积累、记录自己在利用cocos2dx引擎进行项目开发、学习实践中的开发经验。每天的开发任务、查看别人分享的内容,总是能够收获到可取的东西,将这些可取的东西自己再着手开发一次,能够进一步深刻理解这些,同时今后如果碰到类似的开发需求,我也可以很快的迁移到开发项目中去。所以我将自己日常生活中积累的知识点通过一个演示项目,展示出来。因为没有苹果设备,不具备条件所以我只做安卓这块的开发(相关组件的添加是需要安卓、ios分开添加的)。



Part1:友盟社交分享

添加这个组件的原因:

  游戏开发中,如果添加了社交分享元素,那么游戏的互动性将会大大的提升,对于提升游戏留存的能提供很大的帮助。各个社交网站都提供了分享的api接口,如果单独为每个社交分享去写支持接口,那么任务量会挺大的。有需求就会有市场,友盟就提供了社交分享的组件,将大多数社交网站的分享功能都组合都一起了。既然友盟都封装好了,所以我就使用这个组件咯。

  我的笔记是在开发过程中记录下来的,发表到博客是对自己在evernote上记下的东西进行整理。博客也不一定是按照demo项目的各个部分的开发日期顺序来写的。

  官方对如何添加组件有详细的文档,我所记录的是在我添加组件的过程中遇到的一些问题。

1、添加官方提供的代码文件:

  因为要跨平台,所以C++ 2 Java、C++ 2 Object-C是必须的,但是直接将java调用的方法、object-c调用的方法放到工程中去,不做调整的话肯定是有问题的。因此官方就有这样的解决方案:

#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID)

#elif(CC_TARGET_PLATFORM == CC_PLATFORM_IOS)

#endif

采用预编译宏来解决跨平台编译的问题,这也就是引擎做跨平台支持采用的方案。那么问题来了,友盟这里就有点问题,不过也不怪他,代码中都说了:

  人家是机器生成的代码,难免有问题。问题是什么?

  主要是安卓这块,即-Android文件夹内部的问题。他没有采用 #if(CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) 这个来判断!!!所以无论是用VS、还是用XCODE,都会报错,因为找不到<jni.h>文件,导致编译不了!(其实我很早之前就有做过添加友盟组件的工作,当时也遇到了这个问题,但是限于当时的能力没有发现原来是这个原因引发的问题)。

  所以解决方案就是使用:#if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) 这个,将这个文件夹内的类代码处理,vs上不编译。这个类里面其实都是些Java调用C++、C++调用Java的方法,所以直接在win32上是不能通过编译的。

2、分享处理及相关:

  在做自定义按钮分享的时候,在按钮的回调函数中:

  这样就可以打开友盟的分享面板了。需要注意的是,分享的回调函数需要是一个全局函数的!即代码中的shareTest是一个全局函数,我觉得这一点在看了实际代码后会更能理解.

3、关于友盟的截图分享功能:

  一个很大的坑:使用/data/data/com.../files/目录下的图片,um的java方法响应不了,因为其代码中没有针对这个做判断!!一直认为图片是空的。。。。坑了我一个下午。

具体来看:(友盟组件2.0,cocos2dx v3.2)

  定位到友盟sdk包里面的文件:Platforms\Android\controller\com\umeng\social\CCUMSocialController.java这个文件。里面提供的一个方法:parseShareImage(String imgName),这函数功能是根据图片存放路径,创建UMImage对象。实现方式是根据imgName这个参数(参数以什么开头,如”assets/”),判断图片的存储路径(如assets文件夹、网络图片、res资源图片,都不是的话就是sd卡目录),只有这几个判断。但是问题来了,游戏中截图后默认图片存放路径是在data/data/com.xxx.xxx/files目录下,所以友盟提供的那个函数找不到这个路径!!!我对安卓不熟啊,所以我折腾了一个下午就是没有得出个所以然,然后又不会使用eclipse进行debug断点调试,只能是通过打印log来查找,花费了很长的时间才找出问题所在。不过我还是学到了东西:要善于通过log进行问题查找!

  解决方案便是修改这个函数,追加一个判断:

 1 else if(imgName.startsWith("/data")){
 2
 3     if(!TextUtils.isEmpty(imgName)){
 4
 5     File imgFile = new File(imgName);
 6
 7     shareImage = new UMImage(mActivity, imgFile);
 8
 9     }
10 }

4、微信分享:

  需要使用微信分享的话,那么游戏的安卓包必须是签名包(怎么签名网上有很多文档),否则启动不了微信的分享activity。这个问题好像(或者是我没有注意到)友盟官方没有提到,所以当时我在添加微信分享的时候,一直打不开微信分享的UI界面,也是折腾了挺久的。

时间: 2024-08-06 07:54:08

Cocos2dx-demo演示项目:Part1的相关文章

Cocos2d-x v3.1项目创建(三)

Cocos2d-x v3.1项目创建(三) Cocos2d-x官方为我们提供了用于创建.编译.运行和部署的一套命令行的工具集,也就是上篇文章中我们所提到的Cocos2d-Console,它位于我们的引擎目录下的tools子目录中.本篇文章主要要说明的是如何创建Cocos2d-x项目,所以对于编译.运行和部署就不做介绍了.以后项目的编译.运行和部署我们都将在ADT开发环境中进行,但是项目的开发将在VS2012中进行. 我们先来了解Cocos2d-Console的一些相关参数并通过实例演示如何生成项

Cocos2d-x创建android项目(cocos2d-x系列三)

不例外.最显眼的就是,在文件的根目录中增加了一个名为setup.py的配置文件.运行它可以配置系统的一些环境变量. 2.创建项目 新的版本我们来动手创建一个新项目吧.找到tools文件夹....额 打包的那个名为create-project.py的文件似乎木有了!原来,在新版本中,创建新项目已经可以通过命令行来创建了,相对于先前版本的图形界面,命令行更简洁.我们要在setup.py中设置参数.以mac平台为例,我们进入到对应目录,运行脚本setup.py: Setting up cocos2d-

二次、三次贝塞尔曲线demo(演示+获取坐标点)

二次贝塞尔曲线demo: See the Pen quadraticCurveDemo by hanyanjun (@hanyanjun) on CodePen. 我的demo地址(二次) 推荐点击以上链接使用  三次贝塞尔曲线demo: See the Pen bezierCurveDemo by hanyanjun (@hanyanjun) on CodePen. 我的demo地址(三次) 推荐点击以上链接使用 二次.三次贝塞尔曲线demo(演示+获取坐标点)

C#.NET通过Socket实现平行主机之间网络通讯(含图片传输的Demo演示)

在程序设计中,涉及数据存储和数据交换的时候,不管是B/S还是C/S模式,都有这样一个概念:数据库服务器.这要求一台性能和配置都比较好的主机作为服务器,以满足数目众多的客户端进行频繁访问.但是对于一些数据交换的要求不主同,而且涉及到的通讯个体数目不多,如果还采用“一主机多客户机”的模式,便要求一台硬件配置良好而且软件上安装了相关数据服务软件,这样会造成硬件和软件上的很多不必要的成本,这时Socket在点对点的平行对象之间的网络通讯的优势就就发挥出来了. 其实对于Socket通讯来说,服务器和客户端

ztree使用系列二(整合ztree的一些功能和demo演示)

ztree官网上有详细的API和演示demo,这里就不详细介绍了,只对用到的一些功能进行说明一下. 1.用到的几个js文件 jquery-1.4.4.min.js(jQuery的核心js) jquery.ztree.core-3.5.js(ztree的核心js) jquery.ztree.excheck-3.5.js(ztree的复选框功能js) jquery.ztree.exedit-3.5.js(ztree的编辑功能js) 2.用的css文件 zTreeStyle.css(只有这一个css文

CSS3蓝色宽屏二级下拉菜单DEMO演示

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta name="viewport"

【原创】NIO框架入门(一):服务端基于Netty4的UDP双向通信Demo演示

申明:本文由作者基于日常实践整理,希望对初次接触MINA.Netty的人有所启发.如需与作者交流,见文签名,互相学习. 学习交流 更多学习资料:点此进入 推荐 移动端即时通讯交流: 215891622 推荐 前言 NIO框架的流行,使得开发大并发.高性能的互联网服务端成为可能.这其中最流行的无非就是MINA和Netty了,MINA目前的主要版本是MINA2.而Netty的主要版本是Netty3和Netty4(Netty5已经被取消开发了:详见此文). 本文将演示的是一个基于Netty4的UDP服

HTML5火焰文字特效DEMO演示---转载

只有google支持 <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <title>HTML5火焰文字特效DEMO演示 - 何问起</title> <style> html, body { margin: 0px; width: 100%; height: 100%; overflow: hidden; background-color: #00

纯CSS3动画按钮效果 5种漂亮样式DEMO演示

Come in ! click to begin You'll get a lot ! My box with glow HomeSee Us AboutMeet Us ContactEmail Us Home About Services Portfolio Contact us Login ? Register ? <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w