Sfat rapid Stretch SWF cu Stage.ScaleMode

Ce se întâmplă atunci când un site vă înșelă SWF într-o zonă unde nu se potrivește? În acest sfat rapid, veți afla cum puteți prelua controlul asupra scalei SWF.


Pasul 1: Configurați SWF-ul

Porniți un nou proiect Flash și setați scena dvs. pentru a avea o lățime de 350 de pixeli și o înălțime de 250 de pixeli.

Creați o clasă de documente de bază (consultați acest sfat rapid pentru mai multe informații):

 pachet import flash.display.Sprite; clasa publică principală se extinde Sprite funcția publică principală () 

FLA (și SWC, pentru cei care nu utilizați Flash Pro) în fișierul zip conține două elemente:

CheckedBackground, care are aceeași dimensiune ca etapa, cu punctul de înregistrare în colțul din stânga sus.

Față, care este de aproximativ jumătate la fel de largă ca scena, cu punctul său de înregistrare în centru.

Poziționați-le pe scenă astfel:

 clasa publică principală extinde Sprite private var checkedBackground: CheckedBackground; privat fata var: fata; funcția publică principală () checkedBackground = new CheckedBackground (); checkedBackground.x = 0; checkedBackground.y = 0; this.addChild (checkBackground); fata = noua fata (); face.x = stage.stageWidth / 2; // centrare fata fata orizontala face.y = stage.stageHeight / 2; // centrați fața verticală this.addChild (față); 

Rulați SWF-ul:


Pasul 2: Întindeți fereastra de joc

Faceți fereastra mai mare, faceți-o mai mică, întindeți-o atât înăuntru cât și în afară, și vedeți cum se schimbă conținutul:

Acesta este modul implicit al scalei Flash, ARATA TOT. Conținutul nu este niciodată distorsionat și puteți vedea întotdeauna întreaga scenă. Acest lucru înseamnă că obțineți un efect "letterbox" dacă se întinde în afara proporției.


Pasul 3: Încercați modul NO_BORDER Scale

ARATA TOT este modul de scală implicit, dar există și alte trei pe care le putem folosi.

Importați clasa StageScaleMode:

 import flash.display.StageScaleMode;

Aceasta conține constante statice care pot fi utilizate pentru a seta modul scară. Sa incercam FARA LIMITA; adăugați această linie la funcția de constructor:

 stage.scaleMode = StageScaleMode.NO_BORDER;

Rulați SWF-ul și îl întindeți din nou:

Așa cum sugerează și numele, FARA LIMITA evită efectul cutiei poștale. Conținutul rămâne în proporție, dar întotdeauna umple zona disponibilă, chiar dacă aceasta înseamnă tăierea marginilor.


Pasul 4: Încercați modul EXACT_FIT Scale

Schimbați linia care stabilește modul de scară astfel:

 stage.scaleMode = StageScaleMode.EXACT_FIT;

Încearcă:

EXACT_FIT face ca marginea scării să se prindă de marginea zonei disponibile, ducând la denaturare dacă jucătorul este întins în afara proporției.


Pasul 5: Încercați modul de scară NO_SCALE

Pentru a verifica modul de scară finală, schimbați linia astfel:

 stage.scaleMode = StageScaleMode.NO_SCALE;

Verifică:

Cu NO_SCALE, conținutul nu modifică deloc mărimea; ele stau centrate în fereastra jucătorului, chiar dacă aceasta înseamnă a tăia cantități uriașe de margini sau a lăsa granițe masive pe toate laturile.


Concluzie

Stage.scaleMode vă permite să controlați modul în care SWF va apărea dacă un site web modifică dimensiunea zonei disponibile. De asemenea, este utilă pentru crearea de aplicații AIR și site-uri Web full screen; NO_SCALE este o alegere deosebit de bună acolo, deoarece (atunci când este combinată cu un ascultător de evenimente RESIZE) vă permite să potriviți întregul conținut ferestrei, menținând în același timp dimensiunea și proporțiile fiecărui element.

Pentru mai multe detalii, consultați seria lui Franci Zidar pe site-uri web scalabile pe ecran complet :)

Cod