Quick Tips: Fikse V-Sync ("tearing") Problemer i Flash
Del
Del
4
Del
Dette Cyber mandag Envato Tuts + kurs vil bli redusert til bare $ 3. Ikke gå glipp av.
I dagens (Veldig) Quick Tips, vil du lære hvordan du skal løse vanlige problemet med flimring eller rive. Dette er en fryktelig effekt i Flash hvor bitmaps flimre som de er oppdatert, eller synes å rive i to bilder (som i miniatyr).
Hva er årsaken til disse problemene?
I et nøtteskall: rive oppstår når Flash trekker informasjon fra to forskjellige rammer til skjermen samtidig. I miniatyrbildet ovenfor, kan du se hvordan dette kan se ut når du panorerer over et bilde av et tårn; den nederste delen av bildet er fra en ramme, mens den øverste halvdelen er fra den neste. Når du ser dette i bevegelse, vil du bare se det for en brøkdel av et sekund av gangen, men det vil fortsatt være merkbar.
Dette er ofte løses ved hjelp av "V-sync" (vertikal synkronisering), som stopper skjermkortet tegne noe til skjermen til skjermen neste oppdateringssyklus. Imidlertid har Flash virkelig dårlig støtte for V-sync, fordi bildefrekvens av Flash Player er forskjellig fra skrivebordet vertikale oppdateringsfrekvens, noe som betyr at objekter som har mye høyde vil bli hardt rammet ved å rive. Dette gjelder selv om Flash er bildefrekvensen er lik desktop vertikal oppdateringsfrekvens, som de er fortsatt ikke synkronisert
Nå lurer du kanskje på. Hvorfor ikke Adobe fikse dette problemet? Årsaken er at Flash bruker en tidslinje, og endre bildefrekvens endrer dermed hastigheten på avspillingen. Hvis du har gjort et spill eller bildegalleriet i 60 bilder per sekund og skrivebordet vertikal oppdateringsfrekvens var mer enn 60 bilder per sekund, du ville heller ha liten stamming (hvis du forlot film på 60 bilder per sekund), eller ville ha til å spille filmen tilbake raskere å synkronisere med skrivebordet. For mesteparten av innholdet, ville dette ikke anbefales i det hele tatt!
Dette er et problem spill utviklere har ønsket Adobe å fikse for en lang tid, men det er åpenbart at det er problemer med dem å gjøre det. Så, i øyeblikket, vi utviklere har til å komme opp med kreative måter å løse dette problemet selv. Det er ingen enkel måte å løse det på alle datamaskiner, men som de fleste skjermer har en oppdateringsfrekvens på 59,9 eller 60 så kan du sette bildefrekvensen til 60 for å løse det for de fleste brukere. Dette krever imidlertid mer prosessorkraft og kan forsinke din søknad ned.
Den beste måten å løse dette i øyeblikket er ganske enkel og lett å gjøre. Det løser ikke den underliggende årsaken, men det hjelper å redusere mengden av rive så mye som mulig
Hvordan kan jeg redusere Rivende
Maskinvareakselerasjon Nivå 1:.? Direct flagg du vil stille er wmode:. "Direkte". Denne linjen går i "params" -delen av HTML-koden. Det er det, som skal hjelpe dramatisk redusere rive. Hvis du ønsker å vite hvorfor, se på Adobes side på maskinvareakselerasjon. Det forklarer litt om begge nivåer av maskinvareakselerasjon. For enda mer informasjon, sjekk ut denne dyptgående artikkel Ja.?; en annen ting å nevne er at de flere objekter du har på skjermen, jo mer opplagt rive bli. Mindre elementer er vanligvis ikke påvirket av V-sync problemer, men elementer på skjermen som er store gjør det veldig tydelig, så holder antall store objekter til et minimum er en god idé. Også bruker bitmapData .lock () og bitmapData.unlock () er anbefalt og har hjulpet noen mennesker med dette problemet. Låse en BitmapData objekt stopper eventuelle bitmaps fra å være tegnet på nytt før det er låst opp, noe som er en god ide hvis du trenger å gjøre flere endringer mellom rammer. Hvis du vil vite mer, ta en titt på dette blogginnlegget. Du kan gjøre et par ting for å bidra til å redusere rive, men du kan ikke fjerne den helt. Redusere mengden av store gjenstander, sette wmode: "direkte" og bruke bitmap låsing er de beste måtene å redusere rive
er nøkkelen til å hjelpe rive problem. Dette kan settes ved å åpne HTML-filen der SWF er innebygd og redigere parametrene for Flash objektet
Anything Else
Konklusjon
.