Dokumentation der Scripting-API: Unterschied zwischen den Versionen

Aus AquaSoft Wiki
Zur Navigation springenZur Suche springen
Zeile 1: Zeile 1:
= Hooks =
+
Die DiaShow lässt sich mit Scripts stark erweitern. Scripts können sowohl auf das Abspielen Einfluss nehmen aber auch die Benutzeroberfläche erweitern.
Hooks, also Haken, sind vordefinierte Stellen, die genutzt werden, um ein Skript an die DiaShow zu koppeln. Sie bestimmen, wann welcher Code ausgeführt wird. Code, der in die Prozedur ''OnExpandSlideShow'' geschrieben wird, wird beispielsweise direkt vor dem Abspielen der Show ausgeführt. Hooks brauchen nicht definiert zu werden, die Skript-Engine kennt diese speziellen Methoden und reagiert entsprechend darauf.
 
  
Alle Hooks haben als Parameter das aktuelle [[DiaShow-Objekt]] vom Typ '''ISlideShowObject'''. So kann direkt auf das Objekt zugegriffen werden, dem die Skript-Datei angehängt ist.
+
Eines vorneweg: Hier geht es tief in die "Eingeweide" der DiaShow. Sie sollten bereits einfache Programmierkenntnisse mitbringen, um mit dieser Funktionalität etwas anfangen zu können.
  
== allgemeine Hooks ==
+
= Wie benutze ich Scripts? =
 +
Jedem DiaShow-Objekt kann ein Script angehängt werden, das zu verschiedenen Zeiten zur Ausführung kommt. Ein Script ist letztendlich nur eine Textdatei. Wann welcher Teil eines Scripts ausgeführt wird, wird durch [[Hooks]] bestimmt. Ein Hook ist nichts weiter als eine speziell benannte Funktion innerhalb des Scripts. Über die [[Scripting-Entwicklungsumgebung]] können Sie einem DiaShow-Objekt ein Script zuordnen bzw. neue Scripts erstellen.
  
* Vor dem Abspielen der Show
+
= Weiterführende Informationen =
<code>
+
* [[Hooks]] - Wo/Wann kann ein Script etwas beeinflussen
  procedure OnExpandSlideShow(SlideShowObject: ISlideShowObject);
+
* [[DiaShow-Objekte]] - Welche Elemente der Diashow lassen sich erstellen und ändern
</code>
+
* [http://code.google.com/p/dwscript/wiki/Language Sprachreferenz (DelphiWebScript)] - Welche Befehle stellt die Scripting-Programmiersprache bereit
 +
* [[Scripting-Entwicklungsumgebung]] - Wie werden Scripts erstellt, getestet und debuggt.
 +
* [[GUI-API]] - Wie kann eine Benutzeroberfläche erstellt werden
 +
* [[Kategorie:Scripting-API]] - Alle Seiten zur ScriptingAPI
  
 +
= Beispiel =
  
* Beim Einfügen aus der Toolbox; Wird ausgeführt, bevor das Objekt in der Timeline oder dem Storyboard erstellt wurde; Gibt die Funktion TRUE zurück, dann wird das Objekt endgültig eingefügt.
+
Ein ganz einfaches Beispiel eines Scripts könnte so aussehen. Dieses Beispiel definiert einen Bewegungspfad für z.B. ein Bild oder Text:
<code>
 
  function OnInsertPreset(SlideShowObject: ISlideShowObject): Boolean;
 
</code>
 
 
 
  
== spezielle Hooks ==
 
* Beim Rechtsklick auf das Objekt, also beim Erstellen des Kontextmenüs. Dieser Hook sollte genutzt werden, um spezielle Kontextmenü-Einträge zu generieren. Diese sind [https://de.wikipedia.org/wiki/JSON JSON]-formatiert. Der anzugebene Hook ist einfach eine Skript-Methode, die beim Klick ausgeführt werden soll.
 
 
<code>
 
<code>
   //Beispiel eines möglichen Kontextmenü-Eintrags
+
   procedure OnExpandSlideShow(SlideShowObject: [[ISlideShowObject]])
  function OnCreateContextMenu(SlideShowObject: ISlideShowObject): String;
 
 
   begin
 
   begin
     Result := '[' +
+
     var Moveable = SlideShowObject as [[IMoveable]];
                '{' +
+
    if Moveable = nil then
                  '"Caption": "Text des Eintrags",' +
+
      Exit; // Abbrechen, denn Objekt hat keinen Bewegungspfad
                  '"Hint": "MouseOver-Text",' +
 
                  '"Hook": "OnDoClickContextEntry"' +
 
                '}' +
 
              ']';
 
  end;
 
</code>
 
  
 +
    Moveable.SetDefault; // bestehenden Pfad komplett entfernen
 +
    var Item: [[ITimeRect]];
  
* Erstellen der GUI, siehe dazu [[GUI-API]]
+
    // Erster Pfadpunkt (ist immer vorhanden)
 +
    Item := Moveable[0];
 +
    Item.SetBounds(DoubleRect(0.25, 0.25, 0.75, 0.75); // Halber Bildschirm
  
* Bei Anwenden des Effekts [[Effektobjekt|Bildeffekte]]
+
    // Zweiten Pfadpunkt hinzufügen
** Parameter '''Bitmap''': Das [[Leinwandobjekt]], auf das gezeichnet wird
+
    Item := Moveable.AddItem;
<code>
+
    Item.SetBounds(DoubleRect(0.0, 0.0, 1.0, 1.0);  // Ganzer Bildschirm
  procedure Render(SlideShowObject: ISlideShowObject; Bitmap: ICanvas);
+
    Item.SetTime(SlideShowObject.Duration div 2); // Zeitpunkt, wann der zweite Punkt erreicht sein soll
 +
  end;
 
</code>
 
</code>
 
= Unterstützte DiaShow-Objekte =
 
* [[DiaShow-Objekt|allgemein]]
 
* [[Bildobjekt|Bilder]]
 
* [[Soundobjekt|Sounds]] (wie Musik, etc.)
 
* [[Videoobjekt|Filme]]
 
* [[Leinwandobjekt|Zeichenfläche]] zum eigenen Zeichnen
 
* [[Partikelobjekt|Partikel]]
 
* [[Kapitelobjekt|Kapitel]] und [[Collagenobjekt|Collagen]]
 
 
== weitere ==
 
* [[Bewegungsobjekte]]
 
 
= Aufbau der GUI für Skript-Vorlagen =
 
Es ist manchmal notwendig, dass für Vorlagen und Effekte Einstellungen und Eingaben vom Benutzer gebraucht werden. Daher bietet die Scripting-API die Möglichkeit, einfache [https://de.wikipedia.org/wiki/Grafische_Benutzeroberfl%C3%A4che Grafische Benutzeroberflächen] (GUI) zu gestalten.
 
 
* siehe dazu die Dokumentation der [[GUI-API]]
 
 
= Beispiel =
 
  
 
[[Kategorie:Scripting-API]]
 
[[Kategorie:Scripting-API]]

Version vom 15. September 2012, 19:05 Uhr

Die DiaShow lässt sich mit Scripts stark erweitern. Scripts können sowohl auf das Abspielen Einfluss nehmen aber auch die Benutzeroberfläche erweitern.

Eines vorneweg: Hier geht es tief in die "Eingeweide" der DiaShow. Sie sollten bereits einfache Programmierkenntnisse mitbringen, um mit dieser Funktionalität etwas anfangen zu können.

Wie benutze ich Scripts?

Jedem DiaShow-Objekt kann ein Script angehängt werden, das zu verschiedenen Zeiten zur Ausführung kommt. Ein Script ist letztendlich nur eine Textdatei. Wann welcher Teil eines Scripts ausgeführt wird, wird durch Hooks bestimmt. Ein Hook ist nichts weiter als eine speziell benannte Funktion innerhalb des Scripts. Über die Scripting-Entwicklungsumgebung können Sie einem DiaShow-Objekt ein Script zuordnen bzw. neue Scripts erstellen.

Weiterführende Informationen

Beispiel

Ein ganz einfaches Beispiel eines Scripts könnte so aussehen. Dieses Beispiel definiert einen Bewegungspfad für z.B. ein Bild oder Text:

 procedure OnExpandSlideShow(SlideShowObject: ISlideShowObject)
 begin
   var Moveable = SlideShowObject as IMoveable;
   if Moveable = nil then
     Exit; // Abbrechen, denn Objekt hat keinen Bewegungspfad
   Moveable.SetDefault; // bestehenden Pfad komplett entfernen 
   var Item: ITimeRect;
   // Erster Pfadpunkt (ist immer vorhanden)
   Item := Moveable[0];
   Item.SetBounds(DoubleRect(0.25, 0.25, 0.75, 0.75); // Halber Bildschirm 
   // Zweiten Pfadpunkt hinzufügen
   Item := Moveable.AddItem;
   Item.SetBounds(DoubleRect(0.0, 0.0, 1.0, 1.0);  // Ganzer Bildschirm
   Item.SetTime(SlideShowObject.Duration div 2); // Zeitpunkt, wann der zweite Punkt erreicht sein soll
 end;