Input:
一些包含常规单词和特殊单词/ char的文本用#分隔 . 字体和fontSize是常量,让我们说Arial 14没有任何样式 . 例如:
Lorem ipsum dolor#sit#amet,consectetur adipisicing elit,sed do eiusmod tempor incididunt ut labore#et#dolore magna aliqua . Ut enim ad minim veniam,quis nostrud exercitation ullamco laboris nisi ut aliquip ex ea commodo consequat . Duis#aute#irure dolor in repreptderit in voluptate velit esse cillum dolore eu fugiat nulla pariatur . Excepteur#sint #occaecat cupidatat non proident,sunt in culpa qui officia deserunt mollit anim id est laborum .
Output:
当用户点击#someSeparatedWord#时,我需要在控制台中记录该单词(在我的示例中,用户可以点击'sit','et','aute','sint',它只会记录这些单词) . 所以问题在于如何获取或计算这个单词/ char画布坐标?
1 回答
您的#dremiters无法识别单词,因为
context.fillText
在画布上绘制了单词 .这些单词成为画布位图无法识别的部分 .
What your will have to do is use context.measureText to map the bounding box of every word.
然后,您可以针对这些边界框测试单击的mouseX / mouseY位置 .
这是示例代码和演示:http://jsfiddle.net/m1erickson/c9nQj/
这个Demo使用html画布 . 对于kineticJS,您可以在离屏画布上执行这些边界框计算,然后在Kinetic.Text节点上使用这些边界框 .
另请注意,您必须逐行进行边界框计算,因为第1行与第2行等的y坐标框不同 .