2016-03-04 2 views
0

J'ai un plugin qui détecte si la largeur en pixels ou la hauteur d'un objet est supérieure. Cela fonctionne très bien pour d'autres objets, mais avec les calques de forme, il indique simplement la taille de la composition. Mon code estHauteur de la couche de forme = hauteur de la composition dans ExtendScript

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

variables largeur et la hauteur sont la propriété échelle, et je le fais appliquer le pourcentage de propriété échelle incidence sur le résultat, il est donc l'échelle qui apparaît.

Merci

+0

Downvote parce que ce n'est pas une vraie question. – fabianmoronzirfas

+0

Pourquoi n'est-ce pas une question? Bien sûr, syntaxiquement, ça pourrait être un peu faux, mais c'est un problème de programmation qui nécessitait une solution, n'est-ce pas? – stib

Répondre

2

Eh bien, je suppose que votre question est « Comment obtenir la largeur et la hauteur d'une couche de forme dans After Effects? ». Ai-je raison? Pourquoi ne le dites-vous pas? Comme vous l'avez découvert, les propriétés width et height ne renvoient que la largeur et la hauteur du comp. Pour les calques de texte et de forme, vous devez utiliser la méthode sourceRectAtTime(timeT, extents). Il retournera un objet comme celui-ci {top, left, width, height} ceux-ci sont mesurés à partir de l'ancre des couches.

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()); 
+0

Merci beaucoup :) –