Snabbtips Dra din SWF med Stage.ScaleMode

Vad händer när en webbplats klämmer in din SWF till ett område där den inte passar? I den här Snabbtipset hittar du hur du tar kontroll över hur din SWF skalar.


Steg 1: Ställ in din SWF

Starta ett nytt Flash-projekt, och ställ ditt skede till 350px bred, 250px hög.

Skapa en grundläggande dokumentklass (se denna snabba tips för mer info):

 paket import flash.display.Sprite; public class Main utökar Sprite public function Main () 

FLA (och SWC, för de av er som inte använder Flash Pro) i zip-filen innehåller två tillgångar:

CheckedBackground, som är lika stor som scenen med dess registreringspunkt i det övre vänstra hörnet.

Ansikte, vilket är ungefär hälften så brett som scenen med sin registreringspunkt i mitten.

Placera dem på scenen som så:

 offentlig klass Huvudet sträcker sig Sprite privat var checkedBackground: CheckedBackground; privat var ansikte: ansikte; allmän funktion Main () checkedBackground = new CheckedBackground (); checkedBackground.x = 0; checkedBackground.y = 0; this.addChild (checkedBackground); ansikte = nytt ansikte (); face.x = stage.stageWidth / 2; // center ansiktet horisontellt face.y = stage.stageHeight / 2; // center ansiktet vertikalt this.addChild (ansikte); 

Kör din SWF:


Steg 2: Dra ut spelarfönstret

Gör fönstret större, gör det mindre, sträck det både in och out of proportion och se hur innehållet ändras:

Detta är Flash: s standardskaliläge, VISA ALLT. Innehållet förvrängs aldrig, och du kan alltid se hela scenen. Det betyder att du får en "brevlåda" -effekt om den sträcker sig i proportion.


Steg 3: Prova NO_BORDER Scale Mode

VISA ALLT är standard skala läge, men det finns tre andra vi kan använda.

Importera klassen StageScaleMode:

 importera flash.display.StageScaleMode;

Detta innehåller statiska consts som kan användas för att ställa in skalningsläge. Låt oss försöka INGEN GRÄNS; lägg till den här raden till din konstruktörsfunktion:

 stage.scaleMode = StageScaleMode.NO_BORDER;

Kör din SWF och sträck den igen:

Som namnet antyder, INGEN GRÄNS undviker brevlådaffekten. Innehållet stannar i proportion men fyller alltid det tillgängliga området, även om det betyder att beskärning kanterna.


Steg 4: Försök med EXACT_FIT-skala

Ändra linjen som ställer in skalningsläget så här:

 stage.scaleMode = StageScaleMode.EXACT_FIT;

Testa:

EXACT_FIT gör skivans kanter fast vid kanterna på det tillgängliga området, vilket leder till snedvridning om spelaren sträcker sig ur proportion.


Steg 5: Försök med NO_SCALE-skala

För att kolla in slutskalans läge, ändra linjen så här:

 stage.scaleMode = StageScaleMode.NO_SCALE;

Kolla in det:

Med NO_SCALE, innehållet förändras inte alls alls; De ligger centrerade i spelarfönstret, även om det betyder att skära enorma mängder kanterna eller lämna massiva gränser på alla sidor.


Slutsats

Stage.scaleMode kan du styra hur din SWF kommer att visas om en webbplats ändrar storleken på det tillgängliga området. Det är också användbart för att skapa AIR-appar och helskärmswebbplatser. NO_SCALE är ett särskilt bra val där, som (i kombination med en RESIZE-händelselyssnare) låter du passa hela innehållet till fönstret, samtidigt som du behåller storleken och proportionerna för de enskilda tillgångarna.

För mer om det, kolla in Franci Zidars serie på fullskaliga skalbara webbplatser :)