我想做的选择指标花哨的事情。如何获取当前选定字符的边界框?如何获取当前选择的边界框?
回答
这是非平凡的。首先,选择可能需要多个矩形。接下来,没有方便的方法来做到这一点。
这是我必须做的:
var start:int = op.activePosition < op.anchorPosition ? op.activePosition : op.anchorPosition;
var end:int = op.activePosition > op.anchorPosition ? op.activePosition : op.anchorPosition;
var textFlow:TextFlow = this.textFlow;
var rectangles:Dictionary = new Dictionary();
// For each selected character, make a box
for(var i:int=start; i < end; i++) {
var flowLine:TextFlowLine = textFlow.flowComposer.findLineAtPosition(i, true);
if(rectangles[ flowLine.absoluteStart ] == null) {
rectangles[ flowLine.absoluteStart ] = new Rectangle();
(rectangles[ flowLine.absoluteStart ] as Rectangle).x = 0xffffff;
(rectangles[ flowLine.absoluteStart ] as Rectangle).right = 0;
}
var currentRect:Rectangle = rectangles[ flowLine.absoluteStart ];
var textLine:TextLine = flowLine.getTextLine(true);
var atomIndex:int = textLine.getAtomIndexAtCharIndex(i);
if(atomIndex >= 0) {
var atomBounds:Rectangle = textLine.getAtomBounds(atomIndex);
var pt:Point = this.globalToLocal(textLine.localToGlobal(new Point(atomBounds.left, atomBounds.top)));
if(pt.x <= currentRect.left) {
currentRect.left = pt.x;
currentRect.top = pt.y;
}
pt = this.globalToLocal(textLine.localToGlobal(new Point(atomBounds.right, atomBounds.bottom)));
if(pt.x >= currentRect.right) {
currentRect.right = pt.x;
currentRect.bottom = pt.y;
}
}
}
return rectangles;
我不相信有一个简单的方法来克服这个总量控制,从在文档环视了一下我看到这一点: http://opensource.adobe.com/wiki/display/flexsdk/Spark+Text+Primitives#SparkTextPrimitives-FTE
[风格(NAME =“focusedTextSelectionColor”,键入=” UINT”格式= “彩色”,继承= “是”)]
[风格(名称= “inactiveTextSelectionColor”,类型= “UINT”,格式= “彩色”,继承= “是”)]
[Style(name =“unfocusedTextSelectionColor”,type =“uint”,format =“Color”,inherit =“yes”)]]
也要注意:
锚点位置 - 一个字符索引,指定在用箭头键扩展选择时保持固定的选择结束。
活动位置 - 一个字符索引,用于指定用箭头键扩展选区时移动的选区的结尾。
由于这些都是唯一的颜色(或指数),我不知道他们是否会得到你想做的所有事物。我曾经在Flex 3中处理过一些自定义文本选择控件,并最终使用了一种“屏幕外缓冲区”,它将屏幕上的TextField与屏幕上的属性相同,然后将字符1逐个转换为1直到我达到所需的宽度,然后我可以找出控件掉落的字符(类似于android选择)。
我建议您在SDK中搜索上述样式(特别是在RichEditableText及其超类中,我会这样做,但现在有相当多的版本,不知道您使用的是哪一种,TLF和FTE都有点不稳定)。一旦找到这些样式的使用位置,您可能会在选择指示符绘图代码附近,并且可能需要从任何类中扩展以覆盖适当的方法。
对不起,我不能给你一个直接的答案,但希望这可以帮助或其他人能够如果有更简单的方法钟声。
Shaun
- 1. Adobe Photoshop Scripting - 如何选择围绕当前选择的边界框?
- 2. 获取UIWebView的边界选择矩形
- 3. 获取复选框的当前值onclick
- 4. 使用WebKit框架获取目标c中的当前选择?
- 5. 获取所有机构的边界框
- 6. 获取边界框内的点
- 7. 获取地块()边界框的值
- 8. 获取视图的框架/边界
- 9. Django ChoiceField获取当前选择
- 10. 如何获取当前选择的已安装JRE的位置?
- 11. Vimscript:如何获取当前选择的弹出式菜单项
- 12. 如何获取gradle中当前选择的构建变体?
- 13. 如何获取当前在g:link中使用selectBox的选择?
- 14. 获取当前选择的元素毕竟选择在一排
- 15. 获取选择的当前索引选择api下拉
- 16. 如何获取在扩展选择模式下选择的当前DataGrid行?
- 17. 如何获取用于Bing Traffic API的位置的边界框
- 18. 在OpenLayers边界框内获取标记
- 19. GeoServer REST API获取边界框
- 20. 从ggmap对象中获取边界框
- 21. 如何获取wpf中多个项目的边界框?
- 22. 如何获取mapboxgl.GeoJSONSource对象的边界框?
- 23. 如何获取转换文本(java)的边界框?
- 24. 如何获取YOLO对象检测中边界框的坐标?
- 25. 如何获取c#中屏幕上的文本边界框?
- 26. 从OpenLayers中的选择框中获取框边
- 27. 如何获取选区中所有文本元素的边界框值?
- 28. JavaScript - 如何在文档中获取当前选择'索引'
- 29. 如何获得标签选择,并获取当前而不是之前选择的标签?
- 30. 获取尽可能多的多边形的最小边界框