Nyt i ActionScript 3 - Del 3 - Rectangle klassen

Dagens gule seddel handler om den nye Rectangle klasse, som blandt andet kommer til at blive brugt i forbindelse med getBounds(), og ser derudover også ud til at være afløseren for den klassiske hitTest().

Selvom man umiddelbart kommer til at tænke på en stor, farvet kasse, så er et Rectangle objekt usynligt, og bruges udelukkende til programmeringsmæssigt at repræsentere et firkantet område.

Eksempelvis returnerer getCharBounds() som jeg skrev lidt om i forgårs et Rectangle objekt.

I stedet for noname getBounds() objekt
Når man tidligere lavede et getBounds() kald på et MovieClip fik man returneret et noname-objekt med værdier for xMin, xMax, yMin og yMax, men fremover vil man få returneret et Rectangle objekt, som blandt andet har værdierne bottomRight og topLeft.

Jeg studsede lidt over det til at startede med, manglede der ikke to værdier?
Men nej, man skal jo bare lige tænke sig om:
bottomRight.x = xMax
bottomRight.y = yMin
topLeft.x = xMin
topLeft.y = yMax

Ja ja, du havde sikkert fanget det med det samme, men langsom som jeg er skulle jeg lige vende den et par gange :-)

Men, et Rectangle objekt har meget mere end et par koordinater, den har også nogle særdeles nyttige funktioner….

contains() og containsPoint()
To meget simple funktioner der fortæller om et givent koordinat eller Point objekt er inde i Rectangle objektet.

containsRect()
Nu begynder det at blive sjovt…
Denne funktion fortæller om et Rectangle objekt er inden i et andet Rectangle objekt, forstået på den måde at hele objektet skal være inden i, ikke bare dele af det.

Ok, med mine begrænsede sproglige evner er det lidt svært at forklare, så derfor har jeg lige forsøgt mig med at lave en lille grafik:

Rectangle containsRect()

intersection()
Funktion der returnerer et nyt Rectangle objekt svarende til det område som 2 andre Rectangle objekter deler.
Vi prøver med en grafik igen:

Rectangle - intersection()

intersects()
Intersects() svarer meget til den gode, gamle hitTest(), som i ActionScript 3 har skiftet navn til hitTestObject() og hitTestPoint().
Med andre ord, den returnerer true hvis 2 Rectangle objekter på nogen måde rør hianden.

Godt nyt
Rectangle objektet har flere værdier og funktioner end dem som jeg har nævnt her, men synes at de nævnte var de mest interessante, og alt i alt må man sige at den nye Rectangle klasse er rigtig godt nyt, da den gør det nemmere at gøre ting som man før har måttet skrive sine egne funktioner til :-)



Del:These icons link to social bookmarking sites where readers can share and discover new web pages.
  • del.icio.us
  • digg

Kommentarer:

  1. Flashger siger: (19. juli 2006 kl. 03:41 )

    Hej Mads.

    Fedt med en flash-blog.

    Vil blot lige indskyde til interesserede der måske ikke vil kaste sig ud i AS 3 endnu, at både Point (flash.geom.Point) klassen og Rectangle (flash.geom.Rectangle) klassen er at finde i AS 2, og kan bruges ved at importere de to klassers “packages”.

    Keep up the good work!

    MVh

    Asger

Skriv en kommentar