我在玩游戏时更新分数标签并使用 显示它CCLabelBMFont
,当分数改变时,分数标签的每个字符总是改变标签的位置。
我想保持原来的位置!
示例:00:01 占用的空间比 00:50 小;当文本更改CCLabelBMFont
重新定位文本时。帮帮我,如何保持相同的位置?
我在玩游戏时更新分数标签并使用 显示它CCLabelBMFont
,当分数改变时,分数标签的每个字符总是改变标签的位置。
我想保持原来的位置!
示例:00:01 占用的空间比 00:50 小;当文本更改CCLabelBMFont
重新定位文本时。帮帮我,如何保持相同的位置?
当您说“总是改变位置”时,您的意思是“左侧不在同一个地方”吗?
CCNode
类具有anchorPoint
属性,该属性确定该节点的哪个点“固定”到节点父节点中的点。(0, 0) 的锚点表示左下角,(1, 1) - 右上角,(0.5, 0.5) - 中心。所有定位和转换都围绕锚点进行。
将anchorPoint
标签的属性设置为当标签的内容大小发生变化时要“固定”的点。例子:
如果您希望左上角静止:
label.anchorPoint = ccp(0, 1);
如果您希望左侧的中间静止:
label.anchorPoint = ccp(0, 0.5);
您的位图字体是从具有可变宽度的真实类型字体创建的。
只有像 Courier 这样的固定宽度字体才能为字符串中相同数量的字符提供相同的字符串宽度。使用非固定宽度字体绘制的字符串将根据字体中的字符具有不同的宽度,即“w”字符的宽度大于“i”字符的宽度。
打开 FontBook.app(它随每台 Mac 一起提供)并在 Collection 面板中选择“Fixed Width”以仅查看具有固定宽度的字体。在我的系统上,我安装了这些固定宽度的字体:
仅供参考,Monaco 是 Xcode 使用的默认字体。
这个问题很难说,但我猜你是在谈论标签的实际位置发生变化,这意味着你的对齐方式不是你想要的(例如左对齐而不是右对齐)。
Left Justified:
test
testtest
Right Justified:
test
testtest
如果这就是您所说的,您可以通过更改节点锚点来更改文本对齐方式。
// for right justified
label.anchorPoint = ccp(1, 0);