这个项目,我主要是用来积累、记录自己在利用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界面,也是折腾了挺久的。

转载于:https://www.cnblogs.com/zhong-dev/p/4216869.html

Cocos2dx-demo演示项目:Part1相关推荐

  1. 【MAX7800实现KWS20 demo演示】

    [MAX7800实现KWS20 demo演示] 1. 概述 2. 关键字定位演示 2.1 构建固件: 2.2 选择板卡 2.3 MAX78000 EVKIT 2.3.1 MAX78000 EVKIT下 ...

  2. jvm-sandbox:基础了解及demo演示

    文章目录 一.基础准备-被测应用 二.代码编写-自定义Module 三.jvm-sandbox安装及基础命令 四.jvm-sandbox demo演示 4.1.改变方法返回 4.2.异常注入 五.资源 ...

  3. 14、阿里云短信Demo演示、Http的Get请求和Post请求演示、httpClient工具类演示、发送短信模块搭建、搭建用户中心模块、完成user注册基本功能、验证码存入redis、短信验证码注册

    阿里云短信Demo演示 一.前端部分 无前端. 二.后端部分 1.创建发送短信测试模块SmsSendDemo,不用使用骨架. 2.在pom文件中引入依赖坐标 <dependency>< ...

  4. 粉丝投稿 | Openvino2020.2.117在LattePanda上的安装和demo演示

    粉丝投稿 | Openvino2020.2.117在LattePanda上的安装和demo演示 爱分享的 OpenVINO 中文社区 内容来源|李国栋 内 容 排 版 | 卢 蔷 薇 1.简介 Lat ...

  5. JFormDesigner教程(02)demo演示 java swing插件

    目录 0 前言 1 demo演示 0 前言 在上一篇博客中,讲了如何下载JFormDesigner: https://gitee.com/YFwinston/java-swing/tree/main ...

  6. Spring Boot自动装配过程解析及简单Demo演示

    文章目录 1.约定大于配置 2.自动装配原理 2.1.`@SpringBootApplication` 2.2.`@EnableAutoConfiguration` 2.3.`@Import` 2.4 ...

  7. jimogsh 推荐《Mathematica演示项目笔记》

    jimogsh 同学现在是一名兰州大学四年级的学生,我认识他的时候,他还在念两年级.当时他对 Mathematica 充满了好奇,在论坛中提了许多的问题.后来jimogsh 用 Mathematica ...

  8. 深度篇—— CNN 卷积神经网络(四) 使用 tf cnn 进行 mnist 手写数字 代码演示项目

    返回主目录 返回 CNN 卷积神经网络目录 上一章:深度篇-- CNN 卷积神经网络(三) 关于 ROI pooling 和 ROI Align 与 插值 本小节,细说 使用 tf cnn 进行 mn ...

  9. 视频教程-Cocos2d-x 3.x项目实战:星空大战(射击类游戏)-Cocos

    Cocos2d-x 3.x项目实战:星空大战(射击类游戏) 东北大学计算机专业硕士研究生,欧瑞科技创始人&CEO,曾任国内著名软件公司项目经理,畅销书作者,企业IT内训讲师,CSDN学院专家讲 ...

最新文章

  1. shell编程中for/while/util/case/select/break/continue
  2. docker-compose运行sentry
  3. redis系列:主从复制
  4. 【Paper】Network Dissection: Quantifying Interpretability of Deep Visual Representations跑源码遇到的问题
  5. 为什么unity 安装完模块还是找不到sdk_解决在Android Studio 3.2找不到Android Device Monitor工具...
  6. 机器学习(二)——广义线性模型、生成学习算法
  7. CF125E MST company (凸优化+MST)
  8. python利用函数求20的阶乘_请运用reduce函数,计算20的阶乘,慕课网2-19
  9. 央企如何做好数字化转型战略规划
  10. python拟合优度R^2
  11. 网课学习:PDF阅读器,Blumind思维导图
  12. catia 桥接曲面圆角_CATIA建模教程(二)——圆角及桥接在空间曲线中的应用.pdf...
  13. MATLAB实战系列(十三)-Matlab绘制柱形图使用技巧解答(附Matlab代码)
  14. Terminating app due to uncaught exception ‘NSInvalidArgumentException‘
  15. proto_path passed empty directory name. (Use “.“ for current directory.)
  16. C++搜索N皇后问题
  17. rust guessing game
  18. 强化学习使用gym时出现错误:ValueError: too many values to unpack (expected 4)
  19. seo查询工具源码_英文SEO站群建设(下):站群通过自我复制外链获得权重
  20. 亲缘进程、非亲缘进程-共享内存与信号

热门文章

  1. 算法:不同二叉搜索树||
  2. MATLAB如何保存仿真高清图片(matlab)
  3. 4.STM32中对USART1_Config()函数的理解(自定义)
  4. 数据结构:堆排序一(heap sort)
  5. 春季学期第十一周作业
  6. HyperLedger Fabric 错误记录
  7. linux screen 配置(下标高亮)
  8. linux 下安装 php 扩展 典型安装 mysql curl mb_string
  9. 【leetcode】clone-graph
  10. 变电站越级跳闸的几大原因(转载)