如何在 JSFL 中获得符号的描边边界?
Posted
技术标签:
【中文标题】如何在 JSFL 中获得符号的描边边界?【英文标题】:How does one get the stroked bounds of a symbol in JSFL? 【发布时间】:2011-12-24 19:30:57 【问题描述】:actionscript 中的DisplayObject.getBounds 返回包含笔划的对象的边界。 JSFL 中 SymbolInstance 的 left、top、width、height 属性似乎不包括笔划。这是我发现从 JSFL 获取符号边界的唯一方法。还有其他方法吗?
【问题讨论】:
【参考方案1】:在获取对象的边界时,对于 JSFL,笔划的宽度为 0。 我能想到的唯一方法是编辑符号,选择形状,然后 1.) 获取笔画大小并将其值的 1/2 添加到您的计算中,或者 2.) 将笔画转换为填充(对于复杂的轮廓不可靠)
如果你只希望包含笔画但精确的大小并不重要,你可以在 getBounds 的结果中任意添加一些像素。
【讨论】:
我相信 1 仅在笔画围绕整个对象时才有效,而 2 由于您给出的原因而失败。遗憾的是,当我试图将符号导出到图像并在 Flash 外部重新创建它们的位置时,我确实需要精确的尺寸。不过感谢您的尝试!【参考方案2】:您正在Shape
上寻找Edge
对象。 Edge
有一个 Stroke
对象,该对象具有 thickness
属性。
// This will show the selected shape's first edge's thickness:
fl.trace(fl.getDocumentDOM().selection[0].edges[0].stroke.thickness );
您必须遍历所有形状及其所有边缘以确定最终边界(如果您确信所有边缘具有相同的厚度,只需检查一个)。
【讨论】:
以上是关于如何在 JSFL 中获得符号的描边边界?的主要内容,如果未能解决你的问题,请参考以下文章
Unity Shader 卡通渲染 基于退化四边形的实时描边