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界面,也是折腾了挺久的。
转载于:https://www.cnblogs.com/zhong-dev/p/4216869.html
Cocos2dx-demo演示项目:Part1相关推荐
- 【MAX7800实现KWS20 demo演示】
[MAX7800实现KWS20 demo演示] 1. 概述 2. 关键字定位演示 2.1 构建固件: 2.2 选择板卡 2.3 MAX78000 EVKIT 2.3.1 MAX78000 EVKIT下 ...
- jvm-sandbox:基础了解及demo演示
文章目录 一.基础准备-被测应用 二.代码编写-自定义Module 三.jvm-sandbox安装及基础命令 四.jvm-sandbox demo演示 4.1.改变方法返回 4.2.异常注入 五.资源 ...
- 14、阿里云短信Demo演示、Http的Get请求和Post请求演示、httpClient工具类演示、发送短信模块搭建、搭建用户中心模块、完成user注册基本功能、验证码存入redis、短信验证码注册
阿里云短信Demo演示 一.前端部分 无前端. 二.后端部分 1.创建发送短信测试模块SmsSendDemo,不用使用骨架. 2.在pom文件中引入依赖坐标 <dependency>< ...
- 粉丝投稿 | Openvino2020.2.117在LattePanda上的安装和demo演示
粉丝投稿 | Openvino2020.2.117在LattePanda上的安装和demo演示 爱分享的 OpenVINO 中文社区 内容来源|李国栋 内 容 排 版 | 卢 蔷 薇 1.简介 Lat ...
- JFormDesigner教程(02)demo演示 java swing插件
目录 0 前言 1 demo演示 0 前言 在上一篇博客中,讲了如何下载JFormDesigner: https://gitee.com/YFwinston/java-swing/tree/main ...
- Spring Boot自动装配过程解析及简单Demo演示
文章目录 1.约定大于配置 2.自动装配原理 2.1.`@SpringBootApplication` 2.2.`@EnableAutoConfiguration` 2.3.`@Import` 2.4 ...
- jimogsh 推荐《Mathematica演示项目笔记》
jimogsh 同学现在是一名兰州大学四年级的学生,我认识他的时候,他还在念两年级.当时他对 Mathematica 充满了好奇,在论坛中提了许多的问题.后来jimogsh 用 Mathematica ...
- 深度篇—— CNN 卷积神经网络(四) 使用 tf cnn 进行 mnist 手写数字 代码演示项目
返回主目录 返回 CNN 卷积神经网络目录 上一章:深度篇-- CNN 卷积神经网络(三) 关于 ROI pooling 和 ROI Align 与 插值 本小节,细说 使用 tf cnn 进行 mn ...
- 视频教程-Cocos2d-x 3.x项目实战:星空大战(射击类游戏)-Cocos
Cocos2d-x 3.x项目实战:星空大战(射击类游戏) 东北大学计算机专业硕士研究生,欧瑞科技创始人&CEO,曾任国内著名软件公司项目经理,畅销书作者,企业IT内训讲师,CSDN学院专家讲 ...
最新文章
- shell编程中for/while/util/case/select/break/continue
- docker-compose运行sentry
- redis系列:主从复制
- 【Paper】Network Dissection: Quantifying Interpretability of Deep Visual Representations跑源码遇到的问题
- 为什么unity 安装完模块还是找不到sdk_解决在Android Studio 3.2找不到Android Device Monitor工具...
- 机器学习(二)——广义线性模型、生成学习算法
- CF125E MST company (凸优化+MST)
- python利用函数求20的阶乘_请运用reduce函数,计算20的阶乘,慕课网2-19
- 央企如何做好数字化转型战略规划
- python拟合优度R^2
- 网课学习:PDF阅读器,Blumind思维导图
- catia 桥接曲面圆角_CATIA建模教程(二)——圆角及桥接在空间曲线中的应用.pdf...
- MATLAB实战系列(十三)-Matlab绘制柱形图使用技巧解答(附Matlab代码)
- Terminating app due to uncaught exception ‘NSInvalidArgumentException‘
- proto_path passed empty directory name. (Use “.“ for current directory.)
- C++搜索N皇后问题
- rust guessing game
- 强化学习使用gym时出现错误:ValueError: too many values to unpack (expected 4)
- seo查询工具源码_英文SEO站群建设(下):站群通过自我复制外链获得权重
- 亲缘进程、非亲缘进程-共享内存与信号