În Sfatul rapid (Foarte rapid) de astăzi, veți afla cum să rezolvați problema obișnuită de pâlpâire sau rupere. Acesta este un efect oribil în Flash, în care bitmap-urile clipesc în timp ce sunt actualizate sau par să se rupă în două imagini (ca în miniatură).
Într-o coajă de nucă: ruperea apare atunci când Flash atrage simultan informații de la două cadre diferite pe ecran. În imaginea miniaturală de mai sus, puteți vedea cum ar putea arăta acest lucru atunci când treceți peste o imagine a unui turn; partea de jos a imaginii este dintr-un cadru, în timp ce jumătatea superioară este de la următoarea. Când observați acest lucru în mișcare, îl vedeți doar pentru o fracțiune de secundă la un moment dat, dar va fi încă vizibil.
Acest lucru este rezolvat în mod obișnuit folosind "V-sync" (sincronizare verticală), care oprește cardul video care atrage ceva pe ecran până la următorul ciclu de reîmprospătare al ecranului. Cu toate acestea, Flash are un suport foarte slab pentru V-sync, deoarece rata de cadre a Flash Player este diferită de rata de reîmprospătare verticală a desktop-ului, ceea ce înseamnă că obiectele care au o înălțime mare vor fi lovite din greu prin rupere. Acest lucru este valabil chiar dacă rata de cadre a Flash este egală cu rata de reîmprospătare verticală pe desktop, deoarece acestea nu sunt încă sincronizate.
Acum vă puteți întreba: De ce Adobe nu rezolvă această problemă? Motivul este că Flash folosește o cronologie, iar modificarea ratei cadrelor modifică în consecință viteza de redare. Dacă ați realizat o galerie de jocuri sau imagini care rulează la 60 de cadre pe secundă și rata de reîmprospătare verticală a desktopului a fost mai mare de 60 de cadre pe secundă, veți avea fie o ușoară stuttering (dacă ați părăsit filmul la 60fps), fie ar trebui să redați filmul se întoarce mai repede pentru a se sincroniza cu desktopul. Pentru majoritatea conținuturilor, acest lucru nu ar fi recomandat deloc!
Aceasta este o problemă pe care dezvoltatorii de jocuri l-au dorit să o repare de mult timp, dar este evident că există probleme cu ei. Deci, în prezent, dezvoltatorii trebuie să vină cu modalități creative de a rezolva această problemă noi înșine. Nu există nicio modalitate ușoară de ao repara pe toate computerele, dar deoarece majoritatea monitoarelor au o rată de reîmprospătare de 59.9 sau 60, puteți seta rata de cadre la 60 pentru a rezolva problema pentru majoritatea utilizatorilor. Cu toate acestea, acest lucru necesită mai multă putere de procesare și ar putea încetini cererea dvs. în jos.
Cea mai bună modalitate de a rezolva acest lucru în acest moment este destul de simplă și ușor de făcut. Nu rezolvă cauza de bază, dar contribuie la reducerea cât mai mult posibil a ruperii.
Hardware Acceleration Level 1: Direct este cheia pentru a ajuta la ruperea problemei. Acest lucru poate fi setat prin deschiderea fișierului HTML în care este încorporat SWF și editarea parametrilor pentru obiectul Flash.
Steagul pe care doriți să-l setați este wmode: "direct"
. Această linie merge în secțiunea "paramuri" a codului dvs. HTML. Asta e, asta ar trebui să ajute la reducerea drastică a ruperii. Dacă doriți să știți de ce, uitați-vă la pagina Adobe cu privire la accelerarea hardware. Explică puțin despre ambele niveluri ale accelerației hardware. Pentru informații suplimentare, consultați acest articol în profunzime.
Da; un alt lucru de menționat este că, cu cât mai multe obiecte pe ecran aveți, cu atât mai evident va fi ruperea. Articolele mai mici nu sunt de obicei afectate de problemele de sincronizare V, însă elementele de pe ecran care sunt mari o fac foarte evidentă, astfel păstrând numărul minim de obiecte mari la minim este o idee bună.
De asemenea, folosind bitmapData.lock ()
și bitmapData.unlock ()
este recomandat și a ajutat unii oameni cu această problemă. Blocarea unui obiect BitmapData oprește eliminarea oricăror bitmapuri până când este deblocat, ceea ce este o idee bună dacă trebuie să efectuați mai multe modificări între cadre. Pentru a afla mai multe, aruncați o privire la acest post pe blog.
Puteți face câteva lucruri pentru a ajuta la reducerea ruperii, dar nu o puteți elimina complet. Reducerea cantității de obiecte mari, setare wmode: "directă"
și utilizarea blocării bitmap sunt cele mai bune modalități de a ajuta la reducerea ruperii.