zoukankan      html  css  js  c++  java
  • Android版CCLabelTTF在setstring时出现黑块

    首先有个前提知识,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的,他们是如何做到的呢?

  • 相关阅读:
    hbase 得到一行的数据详情
    文件上传
    es 启动用户
    es 分片丢失
    es 调整查询窗口
    hbase 字段值开头查询
    maven 项目linux运行可执行jar
    hbase count 扫表查询
    hbase 查询空串空字段
    sql常用手法(二)
  • 原文地址:https://www.cnblogs.com/unionfind/p/3370465.html
Copyright © 2011-2022 走看看