安卓手机随机无任何点击响应,发生版本cocos2d-x3.15.1
出现的几率比较低,在小米手机出现的次数比较多。安卓手机,开启游戏,游戏不响应所有的点击事件和KeyPressed事件。游戏肯定没有crash,首页的动画播放和背景音效都正常。
经过排查发现问题出现在CCEventDispatcher.cpp文件中,_inDispatch计数,出现紊乱,变成2,所有的listener都无法进入队列,所以无法将事件传递下去。
出现这个问题是因为 EventDispatcher::dispatchEvent
不应该在非Cocos线程中调用。经过全局搜索,发现在CCFileUtils-android.cpp中
FileUtils::Status FileUtilsAndroid::getContents(const std::string& filename, ResizableBuffer* buffer)
{
Director::getInstance()->getEventDispatcher()->dispatchCustomEvent(EVENT_BEFORE_READ_FILE);
static const std::string apkprefix("assets/");
if (filename.empty())
return FileUtils::Status::NotExists;
string fullPath = fullPathForFilename(filename);
if (fullPath[0] == '/')
return FileUtils::getContents(fullPath, buffer);
string relativePath = string();
size_t position = fullPath.find(apkprefix);
if (0 == position) {
// "assets/" is at the beginning of the path and we don't want it
relativePath += fullPath.substr(apkprefix.size());
} else {
relativePath = fullPath;
}
if (obbfile)
{
if (obbfile->getFileData(relativePath, buffer))
return FileUtils::Status::OK;
}
if (nullptr == assetmanager) {
LOGD("... FileUtilsAndroid::assetmanager is nullptr");
return FileUtils::Status::NotInitialized;
}
AAsset* asset = AAssetManager_open(assetmanager, relativePath.data(), AASSET_MODE_UNKNOWN);
if (nullptr == asset) {
LOGD("asset is nullptr");
return FileUtils::Status::OpenFailed;
}
auto size = AAsset_getLength(asset);
buffer->resize(size);
int readsize = AAsset_read(asset, buffer->buffer(), size);
AAsset_close(asset);
if (readsize < size) {
if (readsize >= 0)
buffer->resize(readsize);
return FileUtils::Status::ReadFailed;
}
return FileUtils::Status::OK;
}
对方法 Director :: getInstance () ->getEventDispatcher()->dispatchCustomEvent(EVENT_BEFORE_READ_FILE) ;的调用产生的。3.16中此文件已经更新,大家可以把这个文件升级一下,就可以解决这个问题。
安卓手机随机无任何点击响应,发生版本cocos2d-x3.15.1相关推荐
- 恩布开源安卓手机IM,EntboostIM发布1.5.2版本
为什么80%的码农都做不了架构师?>>> 恩布企业IM的 Android 安卓开源手机客户端 EntboostIM 更新到 1.5.2 版本,开源企业IM. 主要更新内容: 增 ...
- 恩布开源安卓手机IM,EntboostIM发布1.5.1版本
为什么80%的码农都做不了架构师?>>> 恩布企业IM的 Android 安卓开源手机客户端 EntboostIM 更新到 1.5.1 版本,开源企业IM. 主要更新内容: 支 ...
- 安卓手机APP进行自动化点击软件详解
1.常用软件介绍 在使用过鼠大侠,自动连点器等一众手机自动点击软件之后,发现目前最好用的就是auto.js和easyclick,auto.js最新版现在是收费的,easyclick是免费的,并且提供云 ...
- android软件盘弹不出来了,安卓手机软键盘弹出后不响应onKeyDown、onBackPressed方法解决方案...
最近在写评论的时候,想要以下的一个需求,就是点击评论按钮,弹出软键盘和对话框,然后按下手机返回按键之后,对话框和软键盘同时消失,而不是软件盘先消失,然后在按下back按键才能消失对话框. 先来个gif ...
- 安卓手机版微信聊天加密软件 悬浮窗版本
介绍: 1.安装好后允许app悬浮窗权限 2.软件打开后只有悬浮窗界面 3.要加密的内容先在输入框编辑好,然后全选剪切输入的内容,点一下加密按钮,就会自动把加密后的文字复制,最后粘贴发送就好了 4.解 ...
- 苹果手机人脸识别不了是什么原因_安卓手机越用越卡顿,为何苹果手机不会?离不开这3点原因...
原创内容.请勿抄袭. 文| 薰儿 前言 自从有智能手机以后,就有卡不卡的问题,以前的功能机根本就不会有这样的问题,比如诺基亚手机就不会有这样的问题,因为功能机软硬件都是定制的(所以千万别迷恋什么定制机 ...
- 易安卓手机APP教程
易安卓简介: E4A-[易安卓]是一款于 2013 年 06 月 01 日正式发布的.定位于为企业.站长.开发者.网络公司.各种手持设备等等基于安卓系统下的 APP 开发的全中文安卓编程语言,本语言的 ...
- android手机连接电脑,安卓手机连接电脑的方法
安卓手机连接电脑的方法 91助手是最受广大智能手机用户喜爱的中文应用市场,是国内最大.最具影响力的智能终端管理工具,也是全球唯一跨终端.跨平台的内容分发平台.智能贴心的操作体验,最多最安全可靠的资源让 ...
- android 连接电脑,安卓手机怎么连接电脑详细介绍【图文教程】
随着科技不断地发展,现在市场上的安卓手机越来越多,但是有些安卓的手机用户们在下载软件,往电脑上传照片视频时还是不会,不知道应该怎么连接到电脑,其实有的时候数据线将电脑与手机连接起来后,手机上的资料并不 ...
最新文章
- python 函数递归一次增加一次变量_python3--函数(函数,全局变量和局部变量,递归函数)...
- 深入浅出Pytorch:02 PyTorch基础知识
- C++ main函数中参数argc和argv含义及用法( argument count和 argument vector)
- C++多继承(多重继承)详解(二)命名冲突
- Python的__str__()方法
- 关于点击率模型,你知道这三点就够
- python 错误处理 assert
- vue2使用axios post跳坑,封装成模块
- dom4j读取XML文件内容
- mpvue 微信小程序 显示 转发按钮
- 一些有用的SQL Server函数
- [转]java 中的序列化是什么意思?有什么好处?
- MapXtreme 2005 学习心得 第八节Session问题澄清-两种配置方式致开发方式不同(九)...
- 码了几年代码的程序员,有一定的开发经验,应该如何提升自己?
- smobiler介绍(一)
- java微信公众号上传永久素材,微信公众号开发-永久素材的上传
- C语言学习1——第一、二、三章学习记录
- Ubuntu18.04 cuda安装
- ARM体系结构的存储器格式
- ISCSI概念、构架、连接方式、组成和工作原理
热门文章
- [WinError 10013]以一种访问权限不允许的方式做了一个访问套接字的尝试
- 一只小蜜蜂(hdoj 2044,动态规划递推)
- 微信小程序点击图片放大预览,新页面中全屏预览图片
- bixby映射软件下载_如何在Samsung Galaxy S8,S9,S10,Note 8或Note 9上重新映射Bixby按钮...
- 整数a+b(python)
- html页面控制播放器插件
- Redis集群及分布式锁
- vue表单常用的正则验证[邮箱,手机号,密码,固话,微信号]
- linux查看sata端口速率,Linux查看SATA速度和具体设备
- 羽素登陆《岭南大医生》与专家共解痘肌难题