【发布时间】:2013-01-09 15:03:30
【问题描述】:
我正在开发一个径向菜单(用于游戏),但在获取路径上的文本以完全按照我的意愿行事时遇到了一些麻烦。 Here's此刻的菜单示例:
我希望所有文本都与其所在节点的中心对齐,并且 fontSize 足够小以使文本适合可用空间。通过缩放字体并测量宽度直到合适为止,这对于纯文本来说是相当简单的:
var fontSize = 19;
var titleText = new Kinetic.Text({
text: title,
fontSize: fontSize ,
fontFamily: 'Calibri',
fill: 'white',
rotationDeg: rotation
});
while (titleText.getWidth() > availableSpace)
titleText.setFontSize(--fontSize);
但是,这种方法不能应用于弯曲的文本,因为(据我所知)没有办法测量沿路径放置字符串时的长度。
当文本沿路径放置时,我应该如何实现文本的居中和缩放?
【问题讨论】:
-
请原谅真正糟糕的javascript,我对javascript相当陌生!
-
您感兴趣的函数是 CreateOptionWedge,它创建 1 个单个楔形、一行文本并返回包含两者的组。
-
javascript很好,结构很好。首先,您需要一个根据弧的宽度调整字体大小的函数,因为您的弧都是相同的宽度,您可以对字符数量执行类似 text.length 的操作,并执行循环将字体大小设置为更小,直到文本路径的宽度与弧的宽度匹配
-
那么对一段线性文本执行重新缩放,然后使用我在那里计算的字体大小作为路径上的文本?刚刚测试过,效果很好,谢谢:D