3

因此,在我的一生中,我找不到 ExtendScript 的 UnitValue 对象的组件的明确细分。我发现的每个来源都与 Adob​​e 有关,但没有解释。我真的很想有一个完整的参考,但如果没有人能找到,我至少需要回答一些关于它的问题。

首先,它的构造函数是什么?
        我已经看到UnitValue(10,'px')这是有道理的,但我也看到UnitValue(20,20)
了第二,你怎么能从一个单位转换为另一个单位?
第三,如何找到它的值和单位?
        我想我已经看到uv.value但没有得到单位

最后,正如我的标签所示,这当然是针对 Adob​​e 的,因为我从未见过或听说过任何其他使用 ExtendScript 的程序。

4

3 回答 3

6

UnitValue记录在Adob​​e JavaScript 工具指南中。

特别是,您创建一个带有 的对象v = new UnitValue(number, unit),其中unit是一个字符串值,如in(英寸)、mm(毫米)、pt(点)、px(像素)等。

要将 UnitValue 转换为实际数字,请使用该as方法,例如v.as("cm")转换v为厘米。

于 2013-03-19T21:58:36.050 回答
5

好吧,其他人似乎都不知道,我终于弄明白了一些,所以我想我会自己回答:

<This site>作为文档有点帮助,但我认为 Adob​​e 的功能与它略有不同。

UnitValue 的主要构造函数是:

    UnitValue(numericalvalue,unit)

我还看到了一种接受一个字符串的替代方法:

    UnitValue("42 in")

对于转换,UnitValue 带有一个方便的as方法,该方法接受要转换为的单位(作为字符串),然后以该单位返回其测量值,即:

    UnitValue(5,'ft').as('in') === 60

(注意,根据我找到的参考资料,我相信该as方法应该在转换为指示的单位后返回 UnitValue 实例;然而,Adobe 的实现似乎只是返回值 - 因此我使用类型相等运算符上面展示了 Adob​​e 的方法)为了获得数值和测量单位,存在以下两个属性:

    UnitValue.value  // number: the numerical value
    UnitValue.type  // string: the unit of measurement

这是我通过研究所能找到的。如果有人有更好的答案,请将其发布,我可能会接受。

于 2013-01-11T00:41:56.543 回答
2

我真正感兴趣的是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 也总是如此,但我并没有真正深入研究它

于 2018-07-19T09:08:14.833 回答