如何可以获取label组件中某个文字在界面中的坐标?
假设一个cc.Label中有一段文字,并且是自动换行的,我希望获取到其中某个文字所在位置对应其父容器的坐标要怎么做?
如果是h5的话可以考虑用canvas context2D 的measureText 测量出文案总长度,然后根据你设label寛度找你的字所在行数, 配合lineHeight求出Y值, 然后把该行的文字一个一个地测量,来求出X值
你就能得到本地x,y的大概坐标
https://developer.mozilla.org/zh-CN/docs/Web/API/CanvasRenderingContext2D/measureText
我堵三条命你这个需求不是自己独立项目里的而是公司策划提的
- 字体是TTF的话,是用WebGL的接口生成的一整张图片,除了用2楼的方法外,应该还可以改成富文本,比如
测试可以格式化成<color=#FFFFFF>测</color><color=#FFFFFE>试</color>,通过设置一些颜色、大小或者其他属性的改动(尽量不影响显示),来强制让富文本每个字都生成一个Label,这样通过富文本节点的children就可以拿到对应字的节点了 - 字体如果是bmfont的话,显示是每个字凑在一起的,这样就可以直接从Label.renderData获取了,如图:
相关赋值代码如图:
跟三条 -_-
如果label系统字的话很难,因为有的系统字比较烦。不过一般字母和数字长度一样,中文字长度一样,可以在哪里放两个个透明的文字去取长度算。font的话就得考虑文字转成ascall码,然后font._fntConfig.fontDefDictionary去字典里面取数据然后一个个算了
大佬专业的,这个方法很不错
dc很高,还是老老实实算吧
我也跟-_0


