Shape Layer height = ExtendScript中的合成高度

时间:2016-03-04 01:00:55

标签: extendscript after-effects

我有一个插件可以检测对象的像素宽度或高度是否更大。 它适用于其他物体,但对于形状图层,它只是说组成大小。 我的代码是

 pixelWidth = +currentLayer.width * +width / 100;
 pixelHeight = +currentLayer.height * +height / 100;

变量width和height是scale属性,我让它应用Scale属性的百分比影响结果,所以它的出现比例。

由于

1 个答案:

答案 0 :(得分:3)

嗯,我想你的问题是“如何在After Effects中获得形状图层的宽度和高度?”。我对吗?你为什么不这么说。当你发现宽度和高度属性时,只返回comp的宽度和高度。对于文本和形状图层,您需要使用sourceRectAtTime(timeT, extents)方法。它将返回一个像{top, left, width, height}这样的对象,这些对象是从图层锚点开始测量的。

var layer = app.project.activeItem.selectedLayers[0];
$.writeln(layer.width); // gives the comp width
$.writeln(layer.height);// gives the comp height

// from the After Effects Scripting Guide

// AVLayer sourceRectAtTime() method
// app.project.item(index).layer(index).sourceRectAtTime(timeT, extents) Description
// Retrieves the rectangle bounds of the layer at the specified time index,
// corrected for text or shape layer content.
// Use, for example, to write text that is properly aligned to the baseline.

/**
 * sourceRectAtTime
 * @param {Number} The time index, in seconds. A floating-point value.
 * @param {Boolean} True to include the extents, false otherwise. Extents apply to shape layers, increasing the size of the layer bounds as necessary.
 * 
 * @return {Object} A JavaScript object with four attributes, {top, left, width, height}.
 */
var bounds = layer.sourceRectAtTime(0, true);
$.writeln(bounds.toSource());