Wat gebeurt er wanneer een website je SWF in een gebied propt waar het niet past? In deze Snelle tip vindt u informatie over hoe u controle kunt krijgen over hoe uw SWF-schaal wordt geschaald.
Start een nieuw Flash-project en stel je podium in op 350px breed, 250px hoog.
Maak een standaard documentklasse (zie deze Quick Tip voor meer informatie):
pakket import flash.display.Sprite; public class Hoofd breidt uit openbare functie Main ()
De FLA (en de SWC, voor degenen onder u die Flash Pro niet gebruiken) in het zipbestand bevat twee items:
CheckedBackground, die dezelfde grootte heeft als de stage, met zijn registratiepunt in de linkerbovenhoek.
Gezicht, die ongeveer half zo breed is als het podium, met zijn registratiepunt in het midden.
Plaats ze zo op het podium:
public class Hoofd breidt Sprite uit private var checkedBackground: CheckedBackground; privé var gezicht: Gezicht; public function Main () checkedBackground = new CheckedBackground (); checkedBackground.x = 0; checkedBackground.y = 0; this.addChild (checkedBackground); gezicht = nieuw gezicht (); face.x = stage.stageWidth / 2; // centreer het gezicht horizontaal face.y = stage.stageHeight / 2; // centreer het gezicht verticaal this.addChild (gezicht);
Voer uw SWF uit:
Maak het venster groter, maak het kleiner, span het zowel in als buiten proporties en kijk hoe de inhoud verandert:
Dit is de standaardschaalmodus van Flash, TOON ALLES. De inhoud wordt nooit vervormd en je kunt altijd de hele scène zien. Dit betekent dat u een "brievenbus" -effect krijgt als u niet in verhouding staat.
TOON ALLES is de standaardschaalmodus, maar er zijn nog drie andere die we kunnen gebruiken.
Importeer de StageScaleMode-klasse:
import flash.display.StageScaleMode;
Dit bevat statische consts die kunnen worden gebruikt om de schaalmodus in te stellen. Laten we proberen GEEN GRENS; voeg deze regel toe aan je constructorfunctie:
stage.scaleMode = StageScaleMode.NO_BORDER;
Voer je SWF uit en rek het opnieuw uit:
Zoals de naam al doet vermoeden, GEEN GRENS vermijdt het letterbox-effect. De inhoud blijft in verhouding maar vult altijd het beschikbare gebied in, zelfs als dat betekent dat de randen bijgesneden moeten worden.
Wijzig de regel die de schaalmodus instelt als volgt:
stage.scaleMode = StageScaleMode.EXACT_FIT;
Probeer het:
EXACT_FIT laat de randen van het podium aan de randen van het beschikbare gebied plakken, wat leidt tot vervorming als de speler niet in verhouding staat.
Als u de uiteindelijke schaalmodus wilt bekijken, wijzigt u de lijn als volgt:
stage.scaleMode = StageScaleMode.NO_SCALE;
Bekijken:
Met NO_SCALE, de inhoud verandert helemaal niet; ze blijven gecentreerd in het venster van de speler, zelfs als dat betekent dat je enorme hoeveelheden van de randen moet bijsnijden, of enorme randen aan alle kanten moet laten.
Stage.scaleMode laat u bepalen hoe uw SWF wordt weergegeven als een website de grootte van het beschikbare gebied wijzigt. Het is ook handig voor het maken van AIR-apps en websites op volledig scherm; NO_SCALE is daar een bijzonder goede keuze omdat het (in combinatie met een RESIZE-gebeurtenislistener) u in staat stelt om de volledige inhoud aan het venster te koppelen, terwijl u de grootte en verhoudingen van de afzonderlijke items behoudt.
Kijk voor meer informatie over de reeks van Franci Zidar op scalable websites op volledig scherm :)