因此,对于我的生活,我无法找到ExtendScript的UnitValue对象组件的明确细分。我发现的每个来源都与Adobe有关,并没有解释它。我真的希望对它有一个完整的参考,但如果没有人能找到它,我至少需要回答几个问题。
首先,它的构造函数是什么?
我见过UnitValue(10,'px')
这是有道理的,但我也见过UnitValue(20,20)
第二,你如何从一个单位转换到另一个单位?
第三,你怎么能找到它的价值和单位呢?
我想我已经看过uv.value
但没有得到单位最后,正如我的标签所示,这是Adobe的,当然,因为我已经从未见过或听说过使用ExtendScript的任何其他程序。
答案 0 :(得分:5)
嗯,似乎没有其他人知道,我终于想出了一些,所以我想我会自己回答:
<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
这是我的研究所能找到的全部内容。 如果有人有更好的答案,请发布,我可以接受。
答案 1 :(得分:3)
UnitValue记录在Adobe JavaScript Tools Guide。
中特别是,您使用v = new UnitValue(number, unit)
创建了一个对象,其中unit
是一个字符串值,如in
(英寸),mm
(毫米),{{1} }(点),pt
(像素)等
要将UnitValue转换为实际数字,请使用px
方法,例如as
将v.as("cm")
转换为厘米。
答案 2 :(得分:1)
对我来说真正有趣的是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
我认为即使将app.preferences.rulerUnits设置为任何其他类型的度量,默认的baseValue始终为UnitValue(1/72, "in")
,但我并没有真正研究它