ExtendScript的UnitValue

时间:2013-01-10 20:49:11

标签: adobe extendscript

因此,对于我的生活,我无法找到ExtendScript的UnitValue对象组件的明确细分。我发现的每个来源都与Adobe有关,并没有解释它。我真的希望对它有一个完整的参考,但如果没有人能找到它,我至少需要回答几个问题。

首先,它的构造函数是什么?
我见过UnitValue(10,'px')这是有道理的,但我也见过UnitValue(20,20)
第二,你如何从一个单位转换到另一个单位? 第三,你怎么能找到它的价值和单位呢? 我想我已经看过uv.value但没有得到单位最后,正如我的标签所示,这是Adobe的,当然,因为我已经从未见过或听说过使用ExtendScript的任何其他程序。

3 个答案:

答案 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方法,例如asv.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"),但我并没有真正研究它