Bezeichnung
SelectLayer -- wählt eine Ebene als Ausgabeziel (V4.7)
Übersicht
SelectLayer(id, [, mode, frame, combomode])
Beschreibung
Dieser Befehl wählt die angegebene Ebene als aktuelles Ausgabegerät. Dies bedeutet, dass alle Grafikdaten, die nun Hollywood erstellt, an diese Ebene übertragen werden. Wenn EndSelect() aufgerufen wird, zeichnet die Ebene automatisch die Änderungen. Sie übergeben im ersten Argument die ID der Ebene. Wenn diese Ebene eine Animationsebene ist, werden Sie auch das Einzelbild (Frame) angeben müssen.

Das optionale Argument mode ist auf #SELMODE_NORMAL voreingestellt, womit nur die Farbkanäle der Ebene geändert werden. Der Transparenzkanal der Ebene (ist entweder eine Maske oder ein Alphakanal) wird dann nicht verändert werden. Sie können dieses Verhalten ändern, indem Sie #SELMODE_COMBO im optionalen mode Argument übergeben. Wenn Sie diesen Modus verwenden, werden alle Hollywoodgrafiken nach dem Aufruf von SelectLayer() in die Farb- und Transparenzkanäle der Ebene zeichnen. Wenn die Ebene keinen Transparenzkanal hat, verhält sich #SELMODE_COMBO gleich wie #SELMODE_NORMAL.

Ab Hollywood 5.0 können Sie das optionale Argument combomode verwenden, um festzulegen, wie sich #SELMODE_COMBO verhalten soll. Wenn combomode auf 0 gesetzt ist, werden die Farb- und Transparenzinformation aller Pixel in dem Quellenbild in jedem Fall zu dem Zielbild kopiert, selbst wenn die Pixel unsichtbar sind. Dies ist auch voreingestellt. Wenn combomode hingegen auf 1 gesetzt ist, werden nur die sichtbaren Pixel in das Zielbild kopiert. Dies bedeutet, dass, wenn der Alphawert eines Pixels in dem Quellenbild 0 ist (unsichtbar), wird es nicht in das Zielbild kopiert werden.

Ab Hollywood 6.0 steht die neue combomode 2 zur Verfügung. Wenn Sie 2 in combomode übergeben, wird Hollywood die Farbkanäle und Alphakanäle des Quellbildes mit der Farbe und Alpha der Zielbildkanäle mischen. Wenn Sie später das Zielbild zeichnen, wird es so aussehen, als ob ein Bild hintereinander auf das jeweils andere gezeichnet wurde. Bitte beachten Sie, dass das Argument combomode nur zusammen mit #SELMODE_COMBO unterstützt wird. Es hat keine Wirkung, wenn sie es mit den anderen Modi verwenden.

Ein alternativer Weg in die Transparenzkanäle einer Animation zu zeichnen, ist dies separat mit den Befehlen SelectMask() oder SelectAlphaChannel() zu erledigen. Diese beiden Befehle werden jedoch die Schreibdaten nur auf den Transparenzkanal anwenden. Sie werden den Farbkanal nicht ändern. Also, wenn Sie beide Kanäle (Farbe und Transparenz) ändern wollen, müssen Sie SelectLayer() mit mode #SELMODE_COMBO verwenden.

Wenn Sie mit dem ändern der Ebene fertig sind und möchten, dass Ihr Display wieder das Ausgabeziel wird, rufen Sie einfach den Befehl EndSelect() auf. Wenn Ihre Ebene sichtbar ist, wird Hollywood sie automatisch mit den Änderungen aktualisieren. Es ist wichtig zu berücksichtigen, dass die Änderungen nicht sichtbar sind, bevor Sie den Befehl EndSelect() aufgerufen haben.

Beachten Sie, dass Sie alle Befehle, die die Ebene ändern, nicht aufrufen, während sie als Ausgabeziel ausgewählt ist (z.B. SetLayerStyle() oder RemoveLayer()).

Es können nur Befehle von Hollywood verwendet werden, welche Grafiken direkt zeichnen (wenn SelectLayer() aktiv ist). Sie können keine animierten Befehle wie MoveAnim() oder DisplayBrushFX() aufrufen, während SelectLayer() aktiv ist.

Bitte beachten Sie, dass wenn Sie diesen Befehl für eine Vektorebene verwenden (zum Beispiel ein Vieleck oder Textebene), die Ebene automatisch gerastert wird. Das bedeutet, dass effektiv aus der Vektor- eine Pinsel-Ebene wird. Der Unterschied zwischen den beiden ist nur sichtbar, wenn es zur Umwandlung der Ebene kommt: Eine Vektorebene kann ohne Verluste in der Qualität frei umgewandelt werden. Gerasterte Pinselebenen auf der anderen Seite werden immer Verluste in der Qualität haben.

Siehe auch EndSelect(), SelectAlphaChannel(), SelectBrush(), SelectMask(), SelectBGPic() und SelectAnim().

Eingaben
id
Ebene, welche als Ausgabeziel ausgewählt wird
mode
optional: Darstellungsmodus (siehe oben); dies kann entweder #SELMODE_NORMAL oder #SELMODE_COMBO sein; voreingestellt ist #SELMODE_NORMAL
frame
optional: nur wenn es eine Animationsebene ist; dieses Argument gibt das Einzelbild an (erstes Bild: frame=1)
combomode
optional: Wenn #SELMODE_COMBO aktiv ist, kann 0,1 oder 2 eingesetzt werden (siehe oben); voreingestellt ist 0
Beispiel
SelectLayer(1)
SetFillStyle(#FILLCOLOR)
Box(0, 0, 320, 256, #RED)
EndSelect()
Der obige Code zeichnet ein 320x256 großes Rechteck auf Ebene 1.

Navigation zeigen