因此,在我的一生中,我找不到 ExtendScript 的 UnitValue 对象的组件的明确细分。我发现的每个来源都与 Adobe 有关,但没有解释。我真的很想有一个完整的参考,但如果没有人能找到,我至少需要回答一些关于它的问题。
首先,它的构造函数是什么?
我已经看到UnitValue(10,'px')
这是有道理的,但我也看到UnitValue(20,20)
了第二,你怎么能从一个单位转换为另一个单位?
第三,如何找到它的值和单位?
我想我已经看到uv.value
但没有得到单位
最后,正如我的标签所示,这当然是针对 Adobe 的,因为我从未见过或听说过任何其他使用 ExtendScript 的程序。
3 回答
UnitValue记录在Adobe JavaScript 工具指南中。
特别是,您创建一个带有 的对象v = new UnitValue(number, unit)
,其中unit
是一个字符串值,如in
(英寸)、mm
(毫米)、pt
(点)、px
(像素)等。
要将 UnitValue 转换为实际数字,请使用该as
方法,例如v.as("cm")
转换v
为厘米。
好吧,其他人似乎都不知道,我终于弄明白了一些,所以我想我会自己回答:
<This site>作为文档有点帮助,但我认为 Adobe 的功能与它略有不同。
UnitValue 的主要构造函数是:
UnitValue(numericalvalue,unit)
我还看到了一种接受一个字符串的替代方法:
UnitValue("42 in")
对于转换,UnitValue 带有一个方便的as
方法,该方法接受要转换为的单位(作为字符串),然后以该单位返回其测量值,即:
UnitValue(5,'ft').as('in') === 60
(注意,根据我找到的参考资料,我相信该as
方法应该在转换为指示的单位后返回 UnitValue 实例;然而,Adobe 的实现似乎只是返回值 - 因此我使用类型相等运算符上面展示了 Adobe 的方法)为了获得数值和测量单位,存在以下两个属性:
UnitValue.value // number: the numerical value
UnitValue.type // string: the unit of measurement
这是我通过研究所能找到的。如果有人有更好的答案,请将其发布,我可能会接受。
我真正感兴趣的是baseValue
允许我们更改转换参考框架的属性。例如:
var startUnit = UnitValue(500, "px");
startUnit.baseValue = UnitValue(1 / 72, "in"); // from what I can tell this is the default baseUnit value
$.writeln(v.as("in")); // returns 6.94444444444444 which is what 500px @ 72 dpi is as expressed in inches
startUnit.baseValue = UnitValue(1 / 300, "in"); // set to 300dpi
$.writeln(v.as("in")); // returns 1.66666666666667 which is what 500px @ 300 dpi is as expressed in inches
UnitValue(1/72, "in")
我认为即使 app.preferences.rulerUnits 设置为任何其他类型的测量值,默认的 baseValue 也总是如此,但我并没有真正深入研究它