Steuern der Verzerrung beim Skalieren

Flash Player 9 und höher, Adobe AIR 1.0 und höher

Normalerweise wird die beim Skalieren eines Anzeigeobjekts resultierende Verzerrung (beispielsweise horizontales Strecken) gleichmäßig über das ganze Objekt verteilt, sodass jedes Teil um den gleichen Betrag gestreckt ist. Bei Grafiken und Designelementen wird dieses Verhalten gewünscht. Manchmal ist es jedoch von Vorteil, bestimmen zu können, welche Teile eines Anzeigeobjekts gestreckt werden und welche Teile unverändert bleiben sollen. Ein allgemeines Beispiel hierfür ist eine rechteckige Schaltfläche mit gerundeten Ecken. Bei einer normalen Skalierung werden auch die Ecken der Schaltfläche gestreckt, wodurch sich der Eckenradius ändert, wenn die Größe der Schaltfläche geändert wird.

<Skalierungsverzerrung bei einer Schaltfläche mit gerundeten Ecken>

In diesem Fall möchten Sie wahrscheinlich die Skalierung steuern können – um Bereiche festzulegen, die skaliert werden sollen (die geraden Seiten und die Mitte), und Bereiche, die nicht skaliert werden sollen (die Ecken) – sodass die Skalierung ohne sichtbare Verzerrung erfolgt.

<Ohne Verzerrung skalierte Schaltfläche>

Mit der Skalierung im 9-teiligen Segmentraster (Scale-9) können Sie Anzeigeobjekte erstellen, bei denen Sie festlegen können, wie sie skaliert werden. Bei der Skalierung im 9-teiligen Segmentraster wird das Anzeigeobjekt in neun separate Rechtecke aufgeteilt (ein 3x3 Raster, wie das Raster eines Tic-Tac-Toe-Spiels.) Die Rechtecke haben nicht unbedingt die gleiche Größe – Sie können festlegen, wo die Rasterlinien platziert werden. Jeder Inhalt, der sich in den vier Eck-Rechtecken befinden (beispielsweise die gerundeten Ecken einer Schaltfläche), wird bei einer Skalierung des Anzeigeobjekts weder gestreckt noch gestaucht. Das obere mittlere und untere mittlere Rechteck werden horizontal, aber nicht vertikal skaliert, während das linke mittlere und das rechte mittlere Rechteck vertikal, aber nicht horizontal skaliert werden. Das zentrale Rechteck wird sowohl horizontal als auch vertikal skaliert.

<9-teiliges Segmentraster>

Wenn Sie also ein Anzeigeobjekt erstellen und sicherstellen möchten, dass bestimmte Inhalte nicht skaliert werden, achten Sie darauf, dass die Teilungslinien des 9-teiligen Segmentrasters so platziert sind, dass der Inhalt in einem der Eck-Rechtecke endet.

In ActionScript aktiviert das Einstellen eines Werts für die Eigenschaft scale9Grid eines Anzeigeobjekts das 9-teilige Segmentraster und legt die Größe der Rechtecke im Scale-9-Raster des Objekts fest. Sie können eine Instanz der Rectangle-Klasse als Wert für die Eigenschaft scale9Grid verwenden. Dies wird im folgenden Beispiel gezeigt:

myButton.scale9Grid = new Rectangle(32, 27, 71, 64);

Die vier Parameter des Rectangle-Konstruktors sind x-Koordinate, y-Koordinate, Breite und Höhe. In diesem Beispiel wird die obere linke Ecke des Rechtecks am Punkt x: 32, y: 27 auf dem Anzeigeobjekt myButton platziert. Das Rechteck ist 71 Pixel breit und 64 Pixel hoch (also befindet sich die rechte Ecke an der x-Koordinate 103 auf dem Anzeigeobjekt und die untere Ecke an der y-Koordinate 92 auf dem Anzeigeobjekt).

<Hauptrechteck des 9-teiligen Rasters>

Der Bereich der von der Rectangle-Instanz definierten Fläche ist das zentrale Rechteck des Scale-9-Rasters. Die anderen Rechtecke werden von Flash Player und AIR berechnet, indem die Seiten der Rectangle-Instanz wie im Folgenden gezeigt erweitert werden:

<Vollständiges vom Hauptrechteck abgeleitetes 9-teiliges Raster>

In diesem Fall werden die gerundeten Ecken beim Vergrößern oder Verkleinern der Schaltflächen weder gestreckt noch gestaucht, die anderen Bereiche aber werden an die Skalierung angepasst.

<Auswirkungen der Skalierung im 9-teiligen Raster beim Skalieren der Schaltfläche in beide Richtungen>
A.
myButton.width = 131;myButton.height = 106;

B.
myButton.width = 73;myButton.height = 69;

C.
myButton.width = 54;myButton.height = 141;