СКОС (skewо), масштаб (scale о)- отдельно по каждой ОСИ (horizontalScale и verticaiScale), выбор центра трансформаций (AnchorPoint, всего 8 положений). Дополнительно внесем возможность задания окантовки, непрозрачности, а также плотности краски для заливки и окантовки - с тем, чтобы получить законченное решение.
Вид диалогового окна нашего скрипта приведен на рис. 4.2, а результат работы кода - на рис. 4.3.
Рис. 4.2. Окно для задания параметров трансформаций
Рис. 4.3. Один из результатов работы скрипта
! Листинг 4.27. Трансформации объектов
// Задаем параметры опорной точки (центра трансформаций) var myProxyList =
["TopLeft","Top","TopRight","Left”,"Center","Right",'Ъ "BottomLeft","Bottom","BottomRight"];
// Традиционная проверка на корректность входных данных if (арр.selection.length > 0){ myObjects = new Array;
for(i =0; i < app.selection.length; i++){ switch(app.selection[i].constructor.name){ case "Rectangle": case "Polygon": case "GraphicLine": case "Oval": case "TextFrame":
myObjects.push(app.selection[i])
}
}
myDisplayDialog(myObjects);
}
else{
alert("Должен быть выделен хотя бы один объект!");
>
// Отображаем диалоговое окно function myDisplayDialog(myObjects){ myDialog = app.dialogs.add{); myDialog.name = "StepAndRepeat";
// Левая колонка
myLabelsColumnl = myDialog.dialogColumns.add(); myLabelsColumnl.staticTexts.add({staticLabel:"Repeat Count:"});
myLabelsColumnl.staticTexts.add();
myLabelsColumnl.staticTexts.add({staticLabel:"Horizontal Offset:"}); myLabelsColumnl.staticTexts.add({staticLabel:"Vertical Offset:"});
myLabelsColumnl.staticTexts.add();
myLabelsColumnl.staticTexts.add({staticLabel:"Rotation:"}); myLabelsColumnl.staticTexts.add({staticLabel:"Skew:"});
myLabelsColumnl.staticTexts.add();
myLabelsColumnl.staticTexts.add({staticLabel:"Fill Tint:"}); myLabelsColumnl.staticTexts.add({staticLabel:"Stroke Tint:"});
// Правая колонка
myControlsColumnl = myDialog.dialogColumns.add();
myRepeatField = myControlsColumnl.integerEditboxes.add({editValue:2}); myControlsColumnl.staticTexts.add(); myXOffsetField = 'b
myControlsColumnl.measurementEditboxes.add({editValue:0}) ; myYOffsetField =
myControlsColumnl.measurementEditboxes.add({editValue:0});
myControlsColumnl.staticTexts.add();
myRotationField = myControlsColumnl.angleEditboxes.add({editValue:0)); mySkewField = myControlsColumnl.angleEditboxes.add({editValue:0});
myControlsColumnl.staticTexts.add();
myFillTintField = myControlsColumnl.realEditboxes.add({editValue:0}); myStrokeTintField = myControlsColumnl.realEditboxes.add({editValue:0}); myLabelsColumn2 = myDialog.dialogColumns.add(); myLabelsColumn2.staticTexts.add(); myLabelsColumn2.staticTexts.add() ;
myLabelsColumn2.staticTexts.add({staticLabel:"Stroke Weight:"}); myLabelsColumn2.staticTexts.add({staticLabel:"Opacity:"});