我必须在屏幕上显示多个标签而不重叠。标签位置应尽可能接近其描述的特征。这些特征可以是屏幕上的点,线或多边形(想象任何种类的地图)。 我必须在我的申请中满足以下要求:
我需要提出一种方法来实现这一目标。
在我开始尝试随机做这件事之前,我希望这里有人可能已经这样做了,并且能够就如何开始给我一些建议。
基本上,使用标签,我可以使用边界框来相互比较它们。虽然我不知道这样做的好方法。由于它们标记的屏幕上的线段和多边形,我真的不知道应该做些什么以避免重叠。我希望在避免标签本身重叠的基础上不需要太多的努力。
如果我只需要处理与其他标签重叠的标签,我认为排斥会起作用。但是,如果我在屏幕的一半处绘制了一个线段,我不知道如何使用排斥技术避免重叠。
我使用的语言是Actionscript 3和Flex框架。我不相信Flex有任何类似Java Spring的布局管理器类可以为我做这项工作。
无论如何,欢迎链接或建议。我可以允许一些蛮力;我不明白我怎么能做到这一点。谢谢!
PS我相信这个问题的技术术语是“重叠”。
答案 0 :(得分:0)
如果没有引用所有标签和其他需要避免的形状/线条,我认为没有办法实现这一目标。假设您有这些引用,只需绑定到Flex Framework方法即可。
在updateDisplayList()循环标签上;并将它们与屏幕上的其他内容一起定位。您可以使用getExplicitOrMeasuredWidth()和getExplicitOrMeasuredHeight()方法来确定相关项目所需的空间。
如果您使用内置的Flex容器,例如VBox或HBox,则标签和其他线将彼此相对定位。或者,如果您使用Spark,VGroup或HGroup将提供相同的功能。