Hello @Stephen Marsh , thank you for your reply.
Scripting Listener dowsnt work on Apple MacBookPro 13-inch, M2, 2022.
I was able to write the script with help from the documentation above.
var doc = app.activeDocument;
var selectedLayers = getSelectedLayers();
if (selectedLayers.length == 2) {
var result = idLayers(selectedLayers);
var object = result.object
var scale = result.scale
var layersToDistribute = [object, scale];
h0Vcenter(object)
h0Vcenter(scale)
distributeRow(object, scale);
} else {
alert("Please select 2 players");
}
function h0Vcenter(layer) {
var currentX = layer.bounds[0].value;
var currentY = layer.bounds[1].value;
var deltaX = -currentX;
var centerY = doc.height.value / 2;
var layerHeight = layer.bounds[3].value - layer.bounds[1].value;
var targetY = centerY - layerHeight / 2;
var deltaY = targetY - currentY;
layer.translate(deltaX, deltaY);
}
function idLayers(layers) {
var objectLayer = layers[0];
var scaleLayer = layers[1];
var objectWidth = objectLayer.bounds[2].value - objectLayer.bounds[0].value;
var objectHeight = objectLayer.bounds[3].value - objectLayer.bounds[1].value;
var scaleWidth = scaleLayer.bounds[2].value - scaleLayer.bounds[0].value;
var scaleHeight = scaleLayer.bounds[3].value - scaleLayer.bounds[1].value;
if (objectWidth * objectHeight < scaleWidth * scaleHeight) {
var tempLayer = objectLayer;
objectLayer = scaleLayer;
scaleLayer = tempLayer;
}
return { object: objectLayer, scale: scaleLayer };
}
function getSelectedLayers() {
var ActLay = app.activeDocument.activeLayer;
ActLay.allLocked = true;
var L = app.activeDocument.layers.length;
var selLayers = new Array();
for(var i = 0; i < L; i++) {
var LayerType = app.activeDocument.layers[i].typename;
var layerRef = app.activeDocument.layers[i];
if (LayerType == "LayerSet" ) {
var refLength = layerRef.layers.length;
for(var j = 0; j < refLength; j++) {
var refLay = layerRef.layers[j];
if (refLay.allLocked == true){selLayers.push(refLay)}
}
continue;
}
if (layerRef.allLocked == true) {selLayers.push(layerRef)}
}
ActLay.allLocked = false;
return selLayers;
}
function distributeRow(layer2, layer1) {
var layer1Left = layer1.bounds[0].value;
var layer1Right = layer1.bounds[2].value;
var layer2Left = layer2.bounds[0].value;
var layer2Right = layer2.bounds[2].value;
var totalWidth = (layer1Right - layer1Left) + (layer2Right - layer2Left);
var remainingWidth = doc.width.value - totalWidth;
var spaceBetween = Math.round(remainingWidth / 3);
var layer1Delta = spaceBetween - layer1Left;
var layer2Delta = (spaceBetween * 2) + (layer1Right - layer1Left) - layer2Left;
layer1.translate(layer1Delta, 0);
layer2.translate(layer2Delta, 0);
}
so is UXP the new way of writing scripts or what?