• Global community
    • Language:
      • Deutsch
      • English
      • Español
      • Français
      • Português
  • 日本語コミュニティ
    Dedicated community for Japanese speakers
  • 한국 커뮤니티
    Dedicated community for Korean speakers
Exit
0

Slider help to adjust scale and rotation:

Engaged ,
Aug 01, 2019 Aug 01, 2019

Copy link to clipboard

Copied

Hello everyone!

I don't understand why when I apply a value to the slider scala, then another value to the slider rotate the values are reset. Why don't my values apply when I switch between scale and rotate sliders? How can I resolve the error?

Thank you!

dialog = new Window("dialog");     dialog.text = "test";

group1 = dialog.add("group");

group1.orientation = "row";

group1.alignChildren = ["left","center"];

statictext1 = group1.add("statictext");  statictext1.text = "Scale:";

slider1 = group1.add("slider {minvalue: 0, maxvalue: 300, value: 100}");

slider1.preferredSize.width = 200;

ts = group1.add("edittext"); ts.text = "100";

ts.preferredSize.width = 40;

statictext2 = group1.add("statictext");statictext2.text = "%";

group2 = dialog.add("group");

statictext3 = group2.add("statictext"); statictext3.text = "Rotate:";

slider2 = group2.add("slider {minvalue: -180, maxvalue: 180, value: 0}");

slider2.preferredSize.width = 200;

tr = group2.add("edittext"); tr.text = "0";

tr.preferredSize.width = 40;

statictext4 = group2.add("statictext");    statictext4.text = "º";

button1 = dialog.add("button");  button1.text = "Done";

button1.preferredSize.width = 80;

var doc = app.activeDocument; 

var currentStatus = doc.activeHistoryState; 

slider1.onChange= function () {   

    ts.text = Math.round(slider1.value ); 

    doc.activeHistoryState = currentStatus;  app.activeDocument.suspendHistory ("scale", "scale()");

    app.refresh();

}   

ts.onChange= function () {   

    slider1.value  = Number(ts.text); 

    doc.activeHistoryState = currentStatus;  app.activeDocument.suspendHistory ("scale", "scale()");

    app.refresh();

   }

slider2.onChange= function () {   

    tr.text = Math.round(slider2.value ); 

    doc.activeHistoryState = currentStatus;  app.activeDocument.suspendHistory ("rotate", "rotate()");

    app.refresh();

   }   

tr.onChange= function () {   

    slider2.value  = Number(tr.text); 

    doc.activeHistoryState = currentStatus;  app.activeDocument.suspendHistory ("rotate", "rotate()");

    app.refresh();

   }

function scale(){ 

    activeDocument.activeLayer.resize(slider1.value, slider1.value, AnchorPosition.MIDDLECENTER);

}

function rotate(){ 

    with (activeDocument.activeLayer) {rotate(slider2.value)};

}

button1.onClick = function(){

    dialog.close()

    }

dialog.show();

TOPICS
Actions and scripting

Views

866

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines

correct answers 1 Correct answer

People's Champ , Aug 01, 2019 Aug 01, 2019

Combine the rotate and scale functions into one or make them the same.

function scale(){   

    activeDocument.activeLayer.resize(slider1.value, slider1.value, AnchorPosition.MIDDLECENTER); 

    with (activeDocument.activeLayer) {rotate(slider2.value)}; 

}  

 

 

function rotate(){   

    activeDocument.activeLayer.resize(slider1.value, slider1.value, AnchorPosition.MIDDLECENTER); 

    with (activeDocument.activeLayer) {rotate(slider2.value)}; 


Or completely change the script algorithm. )

Votes

Translate

Translate
Adobe
People's Champ ,
Aug 01, 2019 Aug 01, 2019

Copy link to clipboard

Copied

Combine the rotate and scale functions into one or make them the same.

function scale(){   

    activeDocument.activeLayer.resize(slider1.value, slider1.value, AnchorPosition.MIDDLECENTER); 

    with (activeDocument.activeLayer) {rotate(slider2.value)}; 

}  

 

 

function rotate(){   

    activeDocument.activeLayer.resize(slider1.value, slider1.value, AnchorPosition.MIDDLECENTER); 

    with (activeDocument.activeLayer) {rotate(slider2.value)}; 


Or completely change the script algorithm. )

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Engaged ,
Aug 01, 2019 Aug 01, 2019

Copy link to clipboard

Copied

LATEST

Man, you were phenomenal! I spent a few days and nights roasting my brains trying to fix this ... I have a lot to learn. Thank you r-bin

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines
Community Expert ,
Aug 01, 2019 Aug 01, 2019

Copy link to clipboard

Copied

Off the top of my head a guess I think it may depend on the type layer. If its a destructive  edit like rotating a pixels layers as oppose  to rotating a Smart Object layer.  Even rotating vector layer like a text layer changes the layers bounds and it  becomes a different layer than it was.  For layers other that Smart a layer bounds  is what may be for rotation so once a layer is rotated it has a new bounds which is squared to the canvas its rotation is 0.  All Smart object layer have an associated transform other types of layers do so once rotated the layers rotation becomes not rotated is has become a different layer physically relative to the document canvas.

JJMack

Votes

Translate

Translate

Report

Report
Community guidelines
Be kind and respectful, give credit to the original source of content, and search for duplicates before posting. Learn more
community guidelines