AviSynth Syntax - Benutzerdefinierte Skriptfunktionen

Definition und Struktur

Du kannst in AviSynth Scripts deine eigenen Funktionen defnieren und sie wie unten dargestellt aufrufen. Die Funktion kann jeden möglichen Clip oder Variablentyp zurückgeben. Eine benutzerdefinierte Skript-Funktion ist ein unabhängiger Block von Script-Code, der jedes Mal ausgeführt wird, wenn ein Aufruf der Funktion im Skript erfolgt. Ein Beispiel für eine einfache benutzerdefinierte Skript-Funktion folgt gleich (eine benutzerdefiniertes Filter):

function MuteRange(clip c, int fstart, int fend)
{
before = c.Trim(0, -fstart)
current = c.Trim(fstart, fend)
after = c.Trim(fend + 1, 0)
audio = Dissolve(Dissolve(before, current.BlankClip, 3), after, 3)
return AudioDub(c, audio)
}

Benutzerdefinierte Skript-Funktionen beginnen mit dem Schlüsselwort function , gefolgt vom Namen der Funktion. Der Name einer Script-Funktion folgt den gleichen Regeln wie Script Variablen.

Unmittelbar nach dem Namen steht die Argumente-Liste der Funktion. Die Liste (die leer sein kann) besteht aus (erwarteter Argument-Typ - Argumentname) Wortpaaren. Jeder Argument-Typ kann einer sein, der durch die Skriptsprache unterstützt wird.

function MuteRange(clip c, int fstart, int fend)

Dann kommt der Körper der Funktion, d.h. der Kode, der jedes Mal ausgeführt wird, wenn die Funktion aufgerufen wird. Die Argumente werden im Hauptteil der Funktion durch ihre Namen aufgerufen. Der Funktionskörper wird von einem öffnenden und schließenden Klammerpaar eingeschlossen { ... }.

{
before = c.Trim(0, -fstart)
current = c.Trim(fstart, fend)
after = c.Trim(fend + 1, 0)
audio = Dissolve(Dissolve(before, current.BlankClip, 3), after, 3)
return AudioDub(c, audio)
}

Am Ender des Funktionskörpers kommt eine return Anweisung, die den Endwert zurück gibt, der aus den Argumenten berechnet wird und damit ist der Kode im Funktionskörper fertig.

    return AudioDub(c, audio)

Anzumerken ist, dass im Gegensatz zu anderen Sprachen, in denen mehrere return-Anweisungen innerhalb des Funktionskörpers erlaubt sind, in AviSynth Funktionen nur eine einzige return-Anweisung enthalten dürfen. Dies liegt daran, weil diese Sprache Verzweigung nicht unterstützt (d.h. Block-Anweisungen).

Fakten über Benutzerdefinierte Scriptfunktionen

Weiterführende Links

$Date: 2008/12/21 09:23:02 $