Cocos2dx-demo演示项目:Part1

2023-10-29

  这个项目,我主要是用来积累、记录自己在利用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

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

Image(5)

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

Image(6)

  主要是安卓这块,即-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、分享处理及相关:

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

Image(7)

  这样就可以打开友盟的分享面板了。需要注意的是,分享的回调函数需要是一个全局函数的!即代码中的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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

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

  • 禁止的软件包名称:java

    我尝试从数据库名称为 jaane 用户名 Hello 和密码 hello 获取数据 错误 java lang SecurityException Prohibited package name java at java lang Class
  • 尝试将数据存储在点击器网站中

    我正在尝试存储一个名为的变量score无论何时刷新 您都会一次又一次地使用它 我不明白的是它的代码是什么 我尝试了一些方法 但似乎都不起作用 这是我的答题器网站 但是当我尝试使用 JavaScript 来存储它时 它不起作用window o
  • 使用 CSS 或 Javascript 填充动画

    我只是想知道是否可以使用 CSS 或 javascript 创建填充动画 基本上我想创建一个填充动画 如下图所示 http i40 tinypic com eit6ia png http i40 tinypic com eit6ia png
  • 如何解决 Typescript 构建中的错误“找不到模块 'jquery'”

    我目前在 ts 文件的顶部有这个import require jquery 我这样做是因为我试图在我的打字稿文件中使用 jquery 但我似乎无法编译它 因为它返回标题中所述的错误 我正在使用 ASP NET CORE 脚本文件夹 tsco
  • 刷新页面时保存用户的选择

    我目前有一个页面显示不同团队的数据 我有一些数据 用户可以单击使其处于 打开 或 关闭 状态 并为每个数据显示不同的图标 它基本上就像一个清单 只是没有物理复选框 我想记住哪些 复选框 已被选中 即使在用户刷新页面或关闭浏览器并稍后返回之后
  • AWS 无法从 START_OBJECT 中反序列化 java.lang.String 实例

    我创建了一个 Lambda 函数 我想在 API 网关的帮助下通过 URL 访问它 我已经把一切都设置好了 我还创建了一个application jsonAPI Gateway 中的正文映射模板如下所示 input input params
  • Vuejs 2:去抖动不适用于手表选项

    当我在 VueJs 中反跳此函数时 如果我提供毫秒数作为原语 它就可以正常工作 但是 如果我将其提供为对 prop 的引用 它会忽略它 这是道具的缩写版本 props debounce type Number default 500 这是不
  • 在 Mac 上正确运行基于 SWT 的跨平台 jar

    我一直致力于一个基于 SWT 的项目 该项目旨在部署为 Java Web Start 从而可以在多个平台上使用 到目前为止 我已经成功解决了由于 SWT 依赖的系统特定库而出现的导出问题 请参阅相关thread https stackove
  • Java执行器服务线程池[关闭]

    很难说出这里问的是什么 这个问题是含糊的 模糊的 不完整的 过于宽泛的或修辞性的 无法以目前的形式得到合理的回答 如需帮助澄清此问题以便重新打开 访问帮助中心 help reopen questions 如果我使用 Executor 框架在
  • 在移动设备上滚动

    这个问题更多的是一个建议研究 我确实希望它对其他人有帮助 并且它不会关闭 因为我不太确定在哪里寻求有关此事的建议 在过去的 6 个月里 我一直在进行移动开发 我有机会处理各种设备上的各种情况和错误 最麻烦的是滚动问题 当涉及到在网站的多个区
  • 静态变量的线程安全

    class ABC implements Runnable private static int a private static int b public void run 我有一个如上所述的 Java 类 我有这个类的多个线程 在里面r
  • Firebase 添加新节点

    如何将这些节点放入用户节点中 并创建另一个节点来存储帖子 我的数据库参考 databaseReference child user getUid setValue userInformations 您需要使用以下代码 databaseRef
  • Javascript - 水波纹效果

    我需要 JS 上的脚本 它将以 水波纹 样式更改 images html 抱歉 6MB GIF 文件 http fcuunited ru temp listening2 gif http fcunited ru temp listening
  • 带参数的事件监听器

    我想将参数传递给 JavaScript 中的事件侦听器 我已经找到了解决方案 但我无法理解它们为什么或如何工作以及为什么其他解决方案不起作用 我有 C C 背景 但是 Javascript 函数的执行有很大不同 您能否帮助我理解以下示例如何
  • 用于交互式图形绘制的轻量级 JavaScript 库? [关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我有兴趣了解用于绘制交互式图表的最轻量级 javascript 库 我掌握的数据主要是与海洋研究相关的科学数据 我知道一些 jquery
  • Javascript Replace() 和 $1 问题

    我正在尝试创建一个脚本来搜索文本中的模式并在它找到的字符串周围包裹一个标签 shop attributes td each function this html function i html return html replace E 0
  • java.lang.IllegalStateException:驱动程序可执行文件的路径必须由 webdriver.chrome.driver 系统属性设置 - Similiar 不回答

    尝试学习 Selenium 我打开了类似的问题 但似乎没有任何帮助 我的代码 package seleniumPractice import org openqa selenium WebDriver import org openqa s
  • Jquery - 选择选项后如何获取选项的特定数据类型?

    我将直接跳到标记 然后解释我想要做什么 HTML 选择选项
  • 节拍匹配算法

    我最近开始尝试创建一个移动应用程序 iOS Android 它将自动击败比赛 http en wikipedia org wiki Beatmatching http en wikipedia org wiki Beatmatching 两
  • Spring Boot @ConfigurationProperties 不从环境中检索属性

    我正在使用 Spring Boot 1 2 1 并尝试创建一个 ConfigurationProperties带有验证的bean 如下所示 package com sampleapp import java net URL import j

随机推荐

  • java 位运算取8位_【算法】位运算与经典八皇后问题

    文章来源 https mp weixin qq com s 14jQ1yLL4Cw6ufI2E3R yg 作者 码海 前言 位运算在生产或算法解题中并不常见 不过如果你用得好 可以达到事半功倍的效果 而且位运算用得好 也可以极大地提升性能
  • JVM基本结构

    1 JVM 基本架构 2 区域作用 tips Jdk1 6及之前 有永久代 常量池1 6在方法区 Jdk1 7 有永久代 但已经逐步 去永久代 常量池1 7在堆 Jdk1 8及之后 无永久代 常量池1 8在堆 新增元空间 不属于虚拟机 基于
  • Dynamics 365 CRM证书更换

    周末更新公司crm服务器证书时出现一些问题 感谢提供支持的第三方公司 主要步骤参考如下博文https blog csdn net hyhcl article details 109444954 现把存在的问题补充如下 1 如果需要更新crm
  • CTFshow 命令执行 web41

    文章目录 源码 前言 解题 源码
  • 图解 Java 垃圾回收机制,写得非常好! 侵删

    自动垃圾回收是一种在堆内存中找出哪些对象在被使用 还有哪些对象没被使用 并且将后者删掉的机制 所谓使用中的对象 已引用对象 指的是程序中有指针指向的对象 而未使用中的对象 未引用对象 则没有被任何指针给指向 因此占用的内存也可以被回收掉 在
  • 基于STM32F103C8T6ADC检测交流电压

    上篇文章写了硬件部分的实现思路 通过采样电阻的到小电压后经过二级放大电路得到单片机可处理的交流电压 此文介绍了如何采用单片机采集交流电压以及stm32ADC外设的使用 首先是硬件电路部分 电路没有采用核心板 而是直接将芯片焊接到主板上 采用
  • HTML+CSS设计一个简单的水平一级导航栏

    前面我学习了一段时间的HTML和CSS知识 下面我们来运用知识实现一个简单的水平一级导航栏 实现结果 按步骤一步步来 1 首先我们写出它的HTML部分 HTML部分代码 这里是在 div 中使用三个 a 标签 为了方便我没有使用 p 或者
  • Error: That port is already in use.端口号被占用问题解决方法

    标题端口被占用问题 在服务器端先进行查询 然后kill 9 杀死 2473端口 然后在运行Django项目成功
  • MySQL查看数据库相关信息

    https www cnblogs com jiangxiaobo p 6110647 html
  • 百度测开初面面试题分享

    1 java常用的异常处理机制 Java常用的异常处理机制有以下几种 1 try catch finally语句 用于捕获和处理异常 将可能抛出异常的代码放在try块中 然后在catch块中处理异常 无论是否发生异常 finally块中的代
  • Ubuntu/Centos多方法安装mininet

    Ubuntu安装 方法一 apt 安装 sudo apt get install mininet 方法二 源码安装 下载源码 git clone git github com mininet mininet 查看并选择版本 cd minin
  • Vue报错 Property name “xxx“ is not PascalCase

    报错一 Property name my is not PascalCase 首字母需要大写 写成小写的就会报错 报错二 Do not use built in or reserved HTML elements as component
  • 图片下划线 html,HTML 下划线标签元素 HTML下划线标签

    为html字体下划线样式标签 即对文字实现下划线效果 一 认识html下划线标签U 1 html U下划线标签语法 以开始 以结束 u标签不是单独一个标签 而是有开始有闭合的一对标签 使用时候切记勿忘记结束 完成一组u下划线标签使用 内容
  • 【C语言基础】顺序表、链表

    文章目录 一 线性表 1 线性表定义 2 顺序表 2 1 插入操作 2 2 删除操作 2 3 查找操作 二 单链表 1 头插法创建链表 1 1 代码实现 2 尾插法创建链表 2 1 代码实现 3 查找操作 3 1 按值查找 3 2 按位查找
  • 【CTF】端口扫描教程

    学习目的 熟悉TCP UDP协议基础 掌握nmap扫描原理 能够使用命令行与图形界面进行信息收集 熟练使用nmap常用参数对不同网络环境进行端口扫描 并通过扫描结果对目标进行分析 预备知识 TCP与UDP TCP是一种面向连接 连接导向 的
  • Angular6 和 RXJS6 的一些改动

    例一 import Injectable from angular core import Observable from rxjs import User from model User import map from rxjs oper
  • [JavaEE系列] 详解多线程中的CAS及其ABA问题

    文章目录 说在前面 什么是CAS CAS典型的应用场景 1 使用CAS实现原子类 2 使用CAS实现自旋锁 CAS的ABA问题 1 一个ABA问题的例子 2 ABA问题导致出现的BUG 3 ABA问题的解决方案 说在前面 本篇文章是基于前面
  • 详解谷歌最强NLP模型BERT(理论+实战)

    作者 李理 环信人工智能研发中心vp 十多年自然语言处理和人工智能研发经验 主持研发过多款智能硬件的问答和对话系统 负责环信中文语义分析开放平台和环信智能机器人的设计与研发 本文是作者正在编写的 深度学习理论与实战 的部分内容 导语 Goo
  • 电动汽车整车动力参数匹配app。 电机外特性曲线绘制 集成matlab界面小程序

    电动汽车整车动力参数匹配app 电机外特性曲线绘制 集成matlab界面小程序 内容 已知电动汽车整车参数 求解电机主要工作点 并绘制外特性曲线 包括 界面和带可编辑源码 2019版以上打开 推出的App 后期替换GUI功能 另外程序描述比
  • Cocos2dx-demo演示项目:Part1

    这个项目 我主要是用来积累 记录自己在利用cocos2dx引擎进行项目开发 学习实践中的开发经验 每天的开发任务 查看别人分享的内容 总是能够收获到可取的东西 将这些可取的东西自己再着手开发一次 能够进一步深刻理解这些 同时今后如果碰到类似