ExtendScript的UnitValue

3

我实在找不到ExtendScript的UnitValue对象组成部分的清晰说明。每个源都与Adobe有关,没有解释。我真的很想拥有一个完整的参考,但如果没有人能找到,我需要回答其中的一些问题。

首先,它的构造函数是什么?
        我看过UnitValue(10,'px')这很有道理,但我也看过UnitValue(20,20)
其次,如何从一种单位转换为另一种单位?
第三,如何查找它的值和单位?
        我认为我已经看过uv.value,但没找到获取单位的方法

最后,正如我的标签所示,这当然是为Adobe准备的,因为我从来没有见过或听说过使用ExtendScript的其他程序。

3个回答

6

UnitValue文档在Adobe JavaScript工具指南中有相关介绍。

具体而言,您可以使用v = new UnitValue(number, unit)来创建一个对象,其中的unit是像in(英寸),mm(毫米),pt(点),px(像素)等字符串值。

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


谢谢!我在 Photoshop 的文档中找了一圈,但除了一个模糊的描述外,什么也没找到——你找到的书上,在第 230-232 页上,我找到了详细的定义。 - Codesmith
推荐添加外部资源的链接,但请在链接周围添加上下文,以便其他用户了解它是什么以及为什么会出现。对于重要的链接,请引用最相关的部分,以防目标站点无法访问或永久离线 - 此链接已失效。 - ᴍᴇʜᴏᴠ

5

好的,似乎没有其他人知道答案,最终我自己弄懂了一些,所以我想我会回答这个问题:

< 这个网站 >对于文档方面有些帮助,但我认为 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

这是我通过研究找到的全部内容。如果有更好的答案,请发帖,我可能会接受它。

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 设置为其他类型的度量单位,但我并没有深入研究过。


不错的观点,但似乎已经失效了:即使使用 var startUnit=UnitValue(100, "px"); startUnit.baseValue = UnitValue(1 / 300, "in");startUnit.as('in') 也变成了 1.3888,这恰好是 100/72 - ᴍᴇʜᴏᴠ

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接