博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android版CCLabelTTF在setstring时出现黑块
阅读量:4309 次
发布时间:2019-06-06

本文共 496 字,大约阅读时间需要 1 分钟。

首先有个前提知识,cocos2dx里,只能在ui线程(通常也就是主线程)中进行渲染工作(貌似现在有一些引擎是支持多线程渲染的,没有深入研究),否则大约会因为多个线程同时给GPU发指令而出现问题,比如setstring出现黑块。

 

今天这个bug出现的原因是在C++代码里通过jni调用java来显示键盘,在输入完成后,再在java里面通过jni回调C++的代码来setstring。貌似C++代码里面通过jni调java这件事情新起了个线程,导致了java回调C++的setstring操作就不在主线程里面了,从而出现问题。只在Android有问题,pc正常。

 

针对这个具体问题,解决方法是在java回调里面只设置标志,主线程查询标志再进行具体的setstring就好了。但是扩展问题包括jni是如何起新线程的,这样所有jni相关的代码都不能做ui操作,可能需要统一机制处理;以及自带的CCEditBox以及CCTextFieldTTF是好像直接setstring的,他们是如何做到的呢?

转载于:https://www.cnblogs.com/unionfind/p/3370465.html

你可能感兴趣的文章
win10 Docke安装mysql8.0
查看>>
docker 启动已经停止的容器
查看>>
order by 排序原理及性能优化
查看>>
Lock重入锁
查看>>
docker安装 rabbitMq
查看>>
git 常用命令 入门
查看>>
关闭selinx nginx无法使用代理
查看>>
shell 脚本部署项目
查看>>
spring cloud zuul网关上传大文件
查看>>
springboot+mybatis日志显示SQL
查看>>
工作流中文乱码问题解决
查看>>
java并行流
查看>>
mysql查询某一个字段是否包含中文字符
查看>>
Java中equals和==的区别
查看>>
阻塞队列
查看>>
linux的基础知识
查看>>
PCB设计技巧与注意事项
查看>>
main函数带参数
查看>>
关于PCB设计中过孔能否打在焊盘上的两种观点
查看>>
京东技术架构(一)构建亿级前端读服务
查看>>