[FIXED] Photoshop Scripting – Aktualisieren Sie die Fortschrittsleiste in einem Fenster

Ausgabe

Ich möchte einen Fortschrittsbalken für eines meiner Photoshop-Skripte anzeigen. Wenn ich in einem Schaltflächenklickereignis arbeite, kann ich den Fortschrittsbalken ohne Probleme aktualisieren.

Für dieses Skript ist keine Benutzerinteraktion erforderlich. Ich möchte: – das Fenster anzeigen – den Fortschrittsbalken nach getaner Arbeit aktualisieren – das Fenster schließen

var win = new Window("dialog{text:'Progress',bounds:[100,100,400,150],\ bar:Progressbar{bounds:[20,20,280,31] , value:0,maxvalue:100}};");
win.show();

for(...){
    //do work here

    //update progress
    win.bar.value = ...;
}

win.close();

Das Problem ist, win.show();blockiert, bis der Benutzer das Fenster schließt. Ich habe auch versucht, einen Handler hinzuzufügen onCloseund dann das Fenster sofort zu schließen, aber das Fenster wird nie angezeigt.

Irgendwelche Ideen, wie ich einen Fortschrittsbalken zum Laufen bringen könnte?

Lösung

Die Fensterklasse dialogist ein MODAL-Dialog und erfordert, dass Sie ihn schließen, bevor die Ausführung fortgesetzt wird.

Verwenden Sie die Klasse window, um ein nicht blockierendes Fenster zu erstellen:

var win = new Window("window{text:'Progress',bounds:[100,100,400,150],bar:Progressbar{bounds:[20,20,280,31] , value:0,maxvalue:100}};");
win.show();

for(...){
    //do work here

    //update progress
    win.bar.value = ...;
}

win.close();

Hier stoßen Sie jedoch auf das nächste Problem. Abhängig davon, was Sie in der Schleife tun, aktualisiert Photoshop die Benutzeroberfläche nicht schnell genug, um zu sehen, wie sich der Fortschrittsbalken bewegt. Hier bin ich hängengeblieben :/


Beantwortet von –
Max Kielland


Antwort geprüft von –
Pedro (FixError Volunteer)

0 Shares:
Leave a Reply

Your email address will not be published. Required fields are marked *

You May Also Like