[GastForen Programme Print/Bildbearbeitung Adobe InDesign Skriptwerkstatt EventListener - Verständnisfrage

  • Suche
  • Hilfe
  • Lesezeichen
  • Benutzerliste
Print/Bildbearbeitung - Photos, Layout, Design
Themen
Beiträge
Moderatoren
Letzter Beitrag

EventListener - Verständnisfrage

MarioF
Beiträge gesamt: 193

18. Sep 2019, 20:17
Beitrag # 1 von 7
Bewertung:
(751 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
ich versuche gerade den EventListener zu verstehen.
Dazu habe ich folgendes Beispiel: Es soll nach dem Platzieren einer Textdatei eine weitere function ausgeführt werden. Dazu nutze ich ja afterPlace. Die function fängt aber schon an, bevor die Platzierung abgeschlossen worden ist. Hier mal der Code:
Code
#targetengine "event" 

app.addEventListener("afterPlace", _place);

_main()

//Text platzieren
function _main() {
var _myText = "Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.";
var _myFile = new File(Folder.desktop + "-myTxt.txt");
_myFile.open('w');
_myFile.write(_myText);
_myFile.close();
app.activeDocument.placeGuns.loadPlaceGun(_myFile);
_myFile.remove()
}

//Event
function _place(_event) {
alert('Hier soll etwas nach dem Platzieren geschehen')
}


Ich würde aber gern, dass erst etwas geschieden, nachdem auch der Text im TR gesetzt ist.

Frage 2: Wie lösche ich den Event, damit? In dem Beispiel wird der Dialog immer öfter ausgeführt, wenn ich das Script öfters starte. An welcher stelle setze ich
Code
    app.removeEventListener("afterPlace", _place); 

---
Viele Grüße
Mario
X

EventListener - Verständnisfrage

Dirk Becker
Beiträge gesamt: 169

19. Sep 2019, 01:17
Beitrag # 2 von 7
Beitrag ID: #571902
Bewertung:
(727 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
1. Das Platzieren ist schon abgeschlossen, setz mal einen Brechpunkt in _place und probiere in der ESTK Konsole:

Code
_event.target.contents.length 


Result: 272

Gegebenenfalls läuft der Umbruch noch verzögert, in dem Fall kannst Du nachhelfen:

Code
app.activeDocument.recompose(); 


Die Bildschirmdarstellung wird dabei aber noch immer nicht aktualisiert, das kommt erst nach dem Ende des Scripts, aber auch mit dem alert wenn er nach dem recompose() ausgeführt wird.

2. Das ist eigentlich schon der richtige Code. Bei der zweiten Ausführung des Scripts zeigt der Name "_place" aber bereits auf die neue Version dieser Funktion, damit bleibt der alte EventListener aktiv.

Während der Entwicklung hilft

Code
app.eventListeners.everyItem().remove() 

vor dem addEventListener.

Das sollte man aber beim fertigen Script rausnehmen, die EventListener werden nämlich unabhängig von der Targetengine verwaltet und so für alle Scripts gelöscht.

Grüße,
Dirk


als Antwort auf: [#571901]

EventListener - Verständnisfrage

MarioF
Beiträge gesamt: 193

19. Sep 2019, 17:18
Beitrag # 3 von 7
Beitrag ID: #571911
Bewertung:
(666 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo Dirk,
Danke für die Punkte. Werde mir es mal zur Gemüte ziehen.
---
Viele Grüße
Mario


als Antwort auf: [#571902]

EventListener - Verständnisfrage

MarioF
Beiträge gesamt: 193

19. Sep 2019, 19:09
Beitrag # 4 von 7
Beitrag ID: #571912
Bewertung:
(653 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
kannst Du mir den 'Brechpunkt' genauer erklären?
Damit es klarer wird, was ich möchte, habe ich mal mein Script beigefügt.Nicht das gelbe vom Ei, aber egal ;-)
Was macht das Script: Es soll das Hinzufügen und bearbeiten von Platzhaltertext vereinfachen. Den Schritt "Neuer Textrahmen" möchte ich gern so haben, dass nach dem Platzieren des Textes der Textrahmen mit dem PHT aktualisiert wird, also der Klick auf die Schaltfläche 'Aktualisieren' erspart wird.
---
Viele Grüße
Mario


als Antwort auf: [#571902]
Anhang:
PlaceholderText Light v3_1.jsx (7.90 KB)

EventListener - Verständnisfrage

Dirk Becker
Beiträge gesamt: 169

19. Sep 2019, 20:37
Beitrag # 5 von 7
Beitrag ID: #571914
Bewertung:
(641 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Zitat kannst Du mir den 'Brechpunkt' genauer erklären?


Wenn ein Script in einem Debugger ausgeführt wird - also über das ExtendScript Toolkit oder neuerdings auch über VSCode, kann man den Ablauf unterbrechen, Variable betrachten, einzelne Befehle in der Konsole ausführen und danach das Programm fortsetzen, auch in einzelnen Schritten.

Mit einem "breakpoint" hält man die Ausführung eines Scripts an einer Zeile an. Den Breakpoint setzt Du durch einen Klick am linken Rand des Editors, es erscheint dann ein roter Punkt. Alternativ ruft auch der Befehl $.bp() im Code den Debugger auf.

Im "JavaScript Tools Guide CC.pdf" - über das Hilfe-Menü des ESTK zu erreichen - steht noch viel mehr zum eingebauten Debugger.

Wie gesagt, kannst Du dann in ESTK Fenstern die Variablen betrachten, aber auch über die Konsole Befehl ausführen. Wenn ein Breakpoint in der Funktion _place() erreicht wird, gibt zum Beispiel der Ausdruck "_event.target.contents.length" die Länge des Inhalts des neuen Textrahmens aus. 272 Zeichen - der Rahmen ist eindeutig nicht leer, auch wenn der Bildschirm noch nicht aktualisiert wurde.

Grüße,
Dirk


als Antwort auf: [#571912]

EventListener - Verständnisfrage

MarioF
Beiträge gesamt: 193

19. Sep 2019, 20:46
Beitrag # 6 von 7
Beitrag ID: #571915
Bewertung:
(635 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Ah, alles klar.
Wenn der Textrahmen gefüllt ist, muss ich schauen, wie ich ans Ziel komme.
---
Viele Grüße
Mario


als Antwort auf: [#571914]

EventListener - Verständnisfrage

MarioF
Beiträge gesamt: 193

19. Sep 2019, 21:31
Beitrag # 7 von 7
Beitrag ID: #571916
Bewertung:
(628 mal gelesen)
URL zum Beitrag
Beitrag als Lesezeichen
Hallo,
vielen Dank für die Unterstützung.
Ich habe meinen Fehler gefunden und nun läuft es wie es soll.
---
Viele Grüße
Mario


als Antwort auf: [#571914]
Hier Klicken X

Veranstaltungskalender

Hier können Sie Ihre Anlässe eintragen, welche einen Zusammenhang mit den Angeboten von HilfDirSelbst.ch wie z.B. Adobe InDesign, Photoshop, Illustrator, PDF, Pitstop, Affinity, Marketing, SEO, Büro- und Rechtsthemen etc. haben. Die Einträge werden moderiert freigeschaltet. Dies wird werktags üblicherweise innert 24 Stunden erfolgen.

pdf-icon Hier eine kleine Anleitung hinsichtlich Bedeutung der auszufüllenden Formularfelder.

Veranstaltungen
17.10.2019

Digicomp Academy AG, Limmatstrasse 50, Zürich
Donnerstag, 17. Okt. 2019, 18.00 - 20.30 Uhr

Vortrag

Farben sind ein wichtiges Gestaltungselement in Corporate Design und Branding. Als Sinneseindruck, der von Beleuchtung, Materialeigenschaften und Kontext abhängt, ist eine Farbe jedoch schwer zu fassen. Der Verein freieFarbe setzt sich für eine offene, digitale Farbkommunikation ein und hat hierzu das HLC-Farbsystem entwickelt. Dieses hilft, zwischen Gestaltung am Computer, physischen Farbmustern und unterschiedlichen Verfahren in der Produktion eine Brücke zu schlagen. Es basiert zudem auf bestehenden ISO-Standards für die Druckindustrie.

Donnerstag, 17. Oktober 2019, 18 bis 20.30 Uhr

Ja

Organisator: Digicomp Academy AG

https://www.meetup.com/de-DE/Publishing-Group-Switzerland/events/264611769/

Freie Farbe für die digitale Zukunft
Veranstaltungen
21.10.2019 - 22.10.2019

München
Montag, 21. Okt. 2019, 09.30 Uhr - Dienstag, 22. Okt. 2019, 17.30 Uhr

Schulung, Seminar

Wer hochwertige und farbechte Ergebnisse im Digitaldruck erzielen will, der braucht umfassende Colormanagemement- und PDF-Kenntnisse. Selbst wenn die Maschine kalibriert und das Rip richtig konfiguriert ist, lassen die Ergebnisse oft zu wünschen übrig. Der Grund hierfür liegt zu 90 % in den Daten und in falsch eingestellten Anwendungsprogrammen, auch in falschen Einstellungen im Druckmenü.

Nein

Organisator: Cleverprinting.de

https://www.cleverprinting.de/zweitaegige-weiterbildung-zum-digitaldruck-operator/

Zweitägige Weiterbildung zum Digitaldruck-Operator