Bezeichnung
planar.CreateSprite -- erstellt Hardware-Sprites aus einem Pinsel (V2.0)
Übersicht
[id] = planar.CreateSprite(id, brushid)
Beschreibung
Dieser Befehl wandelt den durch brushid angegebenen Pinsel in ein Hardware-Sprite um und weist ihm den Identifikator id zu. Wenn Sie im Argument id Nil angeben, wählt planar.CreateSprite() automatisch einen freien Identifikator für diesen Sprite und gibt ihn zurück.

Beachten Sie, dass der Pinsel, den Sie an diesen Befehl übergeben, die Sprite-Einschränkungen der Amiga-Hardware respektieren muss. Das bedeutet, dass er sich an die folgenden Regeln halten muss:

Beachten Sie auch, dass die Amiga-Hardware nur 8 Sprite-DMA-Kanäle unterstützt. Jeder Kanal kann ein 4-Farben-Sprite haben. Die 8 Sprite-DMA-Kanäle sind mit den folgenden Farbregistern verbunden:

Zwei Kanäle können kombiniert werden, um ein Sprite mit 16 Farben zu erstellen. Das bedeutet, wenn Sie Sprites mit 16 Farben verwenden, können Sie nur 4 statt 8 haben, da ein Sprite mit 16 Farben zwei Sprite-DMA-Kanäle blockiert. 16 Farbsprites sind an die Farbregister 16 bis 31 gebunden (Farbe 16 ist transparent).

Beachten Sie, dass planar.CreateSprite() den Sprite nicht sofort einem Sprite-DMA-Kanal zuordnet. Dies ist die Aufgabe von planar.MapSprite(). Somit können Sie mit planar.CreateSprite() mehr Hardware-Sprites erstellen, als Sprite-DMA-Kanäle vorhanden sind. Dies ist beispielsweise nützlich, wenn Sie Sprites animieren möchten. In diesem Fall könnten Sie zuerst alle Animationsframes mit planar.CreateSprite() in Hardware-Sprites konvertieren und dann die einzelnen Animationsframes vor/nach dem Anzeigen mit planar.MoveSprite() mappen und unmapen.

Eingaben
id
Identifikator für den Hardware-Sprite oder Nil für die automatische ID-Auswahl
brushid
Identifikator des Palettenpinsels, der in ein Hardware-Sprite konvertiert werden soll
Rückgabewerte
id
optional: Identifikator des Hardware-Sprites; wird nur zurückgegeben, wenn Sie Nil als Argument 1 übergeben (siehe oben)
Beispiel
@REQUIRE "plananarama", {PaletteMode = True}
@DISPLAY {Palette = #PALETTE_AGA}
SetPaletteMode(#PALETTEMODE_PEN)
SetFillStyle(#FILLCOLOR)
CreateBrush(1, 64, 64, {Palette = #PALETTE_GRAY4})
SelectBrush(1)
For Local k = 0 To 2
   SetDrawPen(k + 1)
   Box(k * 21, 0, 21, 64)
Next
EndSelect
planar.CreateSprite(1, 1)
planar.MapSprite(1)
Repeat
   planar.MoveSprite(1, MouseX(), MouseY())
   planar.VWait()
Forever
Der obige Code erstellt ein 4-Farben-64x64-Sprite, ordnet ihn einem Sprite-DMA-Kanal zu und bewegt ihn dann dorthin, wo sich der Mauszeiger befindet. Beachten Sie, dass es keine Rolle spielt, dass wir #PALETTE_GRAY4 an CreateBrush() übergeben, da der Hardware-Sprite die Palette des Bildschirms verwendet, also verwenden wir einfach #PALETTE_GRAY4 als Dummy, um CreateBrush() mitzuteilen, dass es uns ein 16-Farben-Sprite geben soll.

Navigation zeigen