De vervorming tijdens het schalen beheren

Flash Player 9 of hoger, Adobe AIR 1.0 of hoger

Wanneer een weergaveobject wordt geschaald (bijvoorbeeld een horizontale vergroting), wordt de resulterende vervorming in gelijke mate over het object verspreid, zodat ieder deel met dezelfde hoeveelheid wordt vergroot. Voor afbeeldingen en ontwerpelementen is dit de gewenste bewerking. Soms wilt u echter meer controle over welk gedeelte van het weergaveobject u wilt vergroten en welk gedeelte u niet wilt wijzigen. Een voorbeeld hiervan is een rechthoekige knop met afgeronde hoeken. Bij een normale schaling worden de hoeken van de knop vergroot, waardoor de hoekstraal wordt gewijzigd als het formaat van de knop wordt aangepast.

<Schaalvervorming voor een knop met afgeronde hoeken>

In dit geval is meer controle over het schalen dus gewenst. U kunt hiermee bepaalde gebieden aanduiden die moeten worden geschaald (de rechte zijden en het midden) en de gebieden die niet mogen worden geschaald (de hoeken), zodat het schalen wordt uitgevoerd zonder zichtbare vervorming.

<Knop die zonder vervorming is geschaald>

U kunt een 9-delige schaling (schaal 9) gebruiken om weergaveobjecten te maken. Hierdoor kunt u beter aangeven hoe de objecten moeten worden geschaald. Met een 9-delige schaling wordt het weergaveobject in negen aparte rechthoeken verdeeld (een raster van 3 x 3, zoals het raster van een boter-kaas-en-eieren-bord). De rechthoeken hebben niet noodzakelijkerwijs hetzelfde formaat, u kunt aangeven waar de rasterlijnen moeten worden geplaatst. De inhoud die zich in de vier rechthoeken in de hoeken bevindt (zoals de afgeronde hoeken van een knop) worden niet vergroot of verkleind wanneer het weergaveobject wordt geschaald. De middelste rechthoeken aan de bovenkant en onderkant worden horizontaal (maar niet verticaal) geschaald, terwijl de middelste rechthoeken aan de linkerkant en rechterkant verticaal (maar niet horizontaal) worden geschaald. De rechthoek in het midden wordt zowel horizontaal als verticaal geschaald.

<Schalingsraster met 9 segmenten>

Houd dit in gedachten wanneer u een weergaveobject maakt en u wilt dat bepaalde inhoud niet wordt geschaald; u hoeft er alleen voor te zorgen dat de scheidende lijnen van het raster voor 9-delige schaling zo worden geplaatst dat de inhoud in een van de rechthoeken in de hoeken terechtkomt.

Als u in ActionScript een waarde instelt voor de eigenschap scale9Grid van een weergaveobject, wordt 9-delige schaling voor het object ingesteld en wordt de grootte van elk rechthoek in het 9-delige raster voor het object gedefinieerd. U kunt als volgt een instantie van de klasse Rectangle gebruiken als waarde voor de eigenschap scale9Grid :

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

De vier parameters van de constructor Rectangle zijn de x-coördinaat, de y-coördinaat, de breedte en de hoogte. In dit voorbeeld wordt de linkerbovenhoek van de rechthoek op punt x: 32, y: 27 geplaatst, op een weergaveobject met de naam myButton . De rechthoek is 71 pixels breed en 64 pixels hoog (de rechterzijde bevindt zich op x-coördinaat 103 van het weergaveobject en de onderste rand bevindt zich op y-coördinaat 92 van het weergaveobject).

<Kernrechthoek van het Schaal 9-raster>

Het daadwerkelijke gebied binnen het gebied dat wordt gedefinieerd door de instantie Rectangle, vertegenwoordigt de middelste rechthoek van een raster voor 9-delige schaling. De overige rechthoeken worden door Flash Player of AIR berekend door de zijden van de instantie Rectangle te vergroten, zoals hier getoond:

<Volledig Schaal 9-raster dat van de kernrechthoek is afgeleid>

Wanneer de knop groter of kleiner wordt geschaald, worden de afgeronde hoeken in dit geval niet vergroot of verkleind, maar worden de overige gebieden wel aangepast.

<Effecten van 9-segments schaling als knop in beide richtingen wordt geschaald>
A.
myButton.width = 131;myButton.height = 106;

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

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