Bezeichnung
BeginAnimStream -- erstellt eine sequentielle Animation (V4.5)
Übersicht
[id] = BeginAnimStream(id, file$, width, height[, format, table])
Beschreibung
Mit diesem Befehl können Sie ein leeres Animationsobjekt auf der Festplatte erstellen, dem Sie dann anschließend mit dem Befehl WriteAnimFrame() Einzelbilder (Frames) einfügen können. Der Vorteil von BeginAnimStream() gegenüber SaveAnim() ist, dass SaveAnim() ein Animationsobjekt als Quelle erfordert. Wenn Sie hingegen BeginAnimStream() verwenden, können Sie Bilder von einzelnen Pinselobjekte in Ihre Animation einfügen. Dies gibt Ihnen die größtmögliche Flexibilität. Wegen seinem sequentiellen Design kann BeginAnimStream() für neue Animationen verwendet werden, die nahezu unbegrenzte Größe und Länge haben. Sie könnten leicht eine zweistündiges AVI-Video mit diesem Befehl erstellen.

Das erste Argument für BeginAnimStream() muss eine ID für das neue Animationsobjekt sein. Alternativ können Sie auch Nil angeben und BeginAnimStream() wird eine ID zuweisen und Ihnen zurückgeben. Im zweiten Argument file$ übergeben Sie den Dateinamen, der für diese Animation verwendet werden soll. In den Argumenten width (Breite) und height (Höhe) geben sie die gewünschten Abmessungen der Animation an. Beim fünften Argument tragen Sie das Format der Animation ein. Dies kann entweder eine der folgenden Animationstypen oder ein von einem Plugin bereitgestelltes Animationsformat sein:

#ANMFMT_GIF:
GIF-Format. Da GIF-Animationen immer palettenbasiert sind, müssen RGB-Grafiken quantisiert werden, bevor sie als GIF exportiert werden können. Beim Aufruf vom Befehl WriteAnimFrame() können Sie die Tags Colors und Dither verwenden, um die Anzahl der Paletteneinträge festzulegen, die den Einzelbilder zugewiesen werden sollen und ob Dithering angewendet werden soll oder nicht. Bei Verwendung von #ANMFMT_GIF mit einem Paletteneinzelbild wird keine Quantisierung durchgeführt. #ANMFMT_GIF unterstützt auch Palettenanimationen mit einem transparenten Stift. #ANMFMT_GIF ist das von BeginAnimStream() verwendete Standardformat.

#ANMFMT_MJPEG:
AVI mit Motion JPEG-Komprimierung. Dies ist ein verlustbehaftetes Animationsformat, so dass Sie das Quality-Tag (siehe unten) festlegen können, um die zu verwendende Komprimierungsstufe zu wählen.

#ANMFMT_IFF:
IFF-Animation. Hollywood verwendet für IFF-Animationen den Komprimierungsmodus 5 (den gebräuchlichsten Komprimierungsmodus). Da IFF-Animationen immer palettenbasiert sind, müssen RGB-Grafiken quantisiert werden, bevor sie als IFF exportiert werden können. Beim Aufruf von WriteAnimFrame() können Sie die Tags Colors und Dither verwenden, um die Anzahl der Paletteneinträge festzulegen, die dem Einzelbild zugewiesen werden sollen und ob Dithering angewendet werden soll oder nicht. Bei Verwendung von #ANMFMT_IFF mit einem Paletteneinzelbild wird keine Quantisierung durchgeführt. #ANMFMT_IFF unterstützt auch Palettenanimationen mit einem transparenten Stift. (V9.0)

Mit dem optionale Tabellenargument können Sie weitere Parameter konfigurieren:

Quality:
Hier können Sie einen Wert zwischen 0 und 100 angeben, womit Sie die Komprimierungsqualität für verlustbehaftete Kompressionsformate wählen dürfen. Ein Wert von 100 bedeutet beste Qualität, 0 hingegen ist die schlechteste. Dies steht nur für Anim-Formate zur Verfügung, die verlustbehaftete Kompression unterstützen. Der Standardwert ist 90, womit eine ziemlich gute Qualität möglich ist.

FPS:
Da Videoformate wie AVI keinen individuellen Verzögerungswert für jedes Einzelbild (Frame) unterstützen, erfordert es einen globalen Wert, der angibt, wie viele Bilder pro Sekunde angezeigt werden sollen. Mit FPS können Sie die Anzahl an Bildern festlegen. Dies wird nur für Videodateiformate berücksichtigt. Voreingestellt sind 25 Bildern pro Sekunde.

Adapter:
Mit diesem Tag können Sie einen oder mehrere Dateiadapter angeben, die überprüfen sollen, ob sie die angegebene Datei speichern können. Wenn Sie diesen Tag verwenden, müssen Sie ihn auf eine Zeichenkette setzen, die den Namen eines oder mehrerer Adapter enthält. Standardmäßig wird der Adapter verwendet, der mit SetDefaultAdapter() gesetzt wurde. Siehe Lade- und Adaptermodule für Details. (V10.0)

UserTags:
Dieser Tag kann verwendet werden, um zusätzliche Daten anzugeben, die an den Adapter übergeben werden sollen. Wenn Sie diesen Tag verwenden, müssen Sie ihn auf eine Tabelle mit Schlüssel-Wert-Paaren setzen, die die zusätzlichen Daten enthalten, die an Plugins übergeben werden sollen. Siehe Benutzer-Tags für Details. (V10.0)

Hier ist eine Tabelle, die einen Überblick zeigt, welche Tabellenelemente mit den verschiedenen Animationsformate verwendet werden können:

Wenn Sie erfolgreich ein neues Animationsobjekt erstellt haben, können Sie dann nacheinander Einzelbilder (Frames) mit dem Befehl WriteAnimFrame() anhängen. Wenn Sie mit dem Hinzufügen von Einzelbildern fertig sind, müssen Sie den Befehl FinishAnimStream() aufrufen, um die Animationsdatei auf der Festplatte abzuschließen. Somit wäre sie nun einsatzbereit.

Eingaben
id
ID des Animationsobjekt oder Nil für die automatische ID-Zuweisung
file$
Zieldatei
width
gewünschte Breite der Animation
height
gewünschte Höhe der Animation
format
optional: Animationsformat (voreingestellt ist #ANMFMT_GIF)
table
optional: weitere Argumente fürs Speichern; siehe oben
Rückgabewerte
id
optional: Identifikator der Animation; Wird nur zurückgegeben werden, wenn Sie Nil als Argument 1 angegeben haben (siehe oben)
Beispiel
CreateBrush(1, 320, 240)
SelectBrush(1)
SetFillStyle(#FILLCOLOR)
BeginAnimStream(1, "test.gif", 320, 240)
For Local k = 1 To 100
   Circle(#CENTER, #CENTER, k * 2, #RED)
   WriteAnimFrame(1, 1)
Next
FinishAnimStream(1)
EndSelect
Der obige Code erstellt eine neue GIF-Animation mit 100 Bildern. Die Animation wird einen roten Kreis zeigen und in den Bildschirm zoomen.

Navigation zeigen