Nel suggerimento molto (molto) di oggi, imparerai come risolvere il problema comune dello sfarfallio o dello strappo. Questo è un effetto orribile in Flash in cui le immagini bitmap sfarfallano man mano che vengono aggiornate o sembrano strappare due immagini (come nella miniatura).
In breve: lo strappo si verifica quando Flash richiama contemporaneamente informazioni da due diversi fotogrammi sullo schermo. Nell'immagine in miniatura sopra, puoi vedere come potrebbe apparire quando esegui il panning attraverso l'immagine di una torre; la parte inferiore dell'immagine proviene da un fotogramma, mentre la metà superiore è dal successivo. Quando osservi questo movimento, lo vedresti solo per una frazione di secondo alla volta, ma sarebbe comunque visibile.
Questo è comunemente risolto usando "V-sync" (sincronizzazione verticale), che interrompe la visualizzazione della scheda video sullo schermo fino al successivo ciclo di aggiornamento dello schermo. Tuttavia, Flash ha un supporto davvero scarso per V-sync, perché la frequenza fotogrammi di Flash Player è diversa dalla velocità di aggiornamento verticale del desktop, il che significa che gli oggetti che hanno molta altezza saranno colpiti duramente da strappi. Questo è vero anche se il frame rate di Flash è uguale alla frequenza di aggiornamento verticale del desktop, poiché non sono ancora sincronizzati.
Ora ti starai chiedendo: perché Adobe non risolve questo problema? Il motivo è che Flash utilizza una timeline e la modifica della frequenza fotogrammi modifica di conseguenza la velocità di riproduzione. Se hai realizzato un gioco o una galleria di immagini a 60 frame al secondo e la frequenza di aggiornamento verticale del desktop era superiore a 60 frame al secondo, avresti una leggera balbuzie (se avessi lasciato il filmato a 60fps), o avresti dovuto suonare filmato più veloce per la sincronizzazione con il desktop. Per la maggior parte dei contenuti, questo non sarebbe raccomandato a tutti!
Questo è un problema che gli sviluppatori di giochi hanno voluto che Adobe risolvesse da molto tempo, ma è ovvio che ci sono dei problemi con loro. Quindi, al momento, noi sviluppatori dobbiamo trovare modi creativi per risolvere da soli questo problema. Non esiste un modo semplice per risolverlo su tutti i computer, ma poiché la maggior parte dei monitor ha una frequenza di aggiornamento di 59,9 o 60, è possibile impostare il frame rate su 60 per risolverlo per la maggior parte degli utenti. Tuttavia, ciò richiede più potenza di elaborazione e potrebbe rallentare l'applicazione.
Il modo migliore per risolverlo al momento è abbastanza semplice e facile da fare. Non risolve la causa sottostante, ma aiuta a ridurre il più possibile lo strappo.
Accelerazione hardware Livello 1: diretto è la chiave per aiutare il problema dello strappo. Questo può essere impostato aprendo il file HTML in cui è incorporato il file SWF e modificando i parametri per l'oggetto Flash.
La bandiera che si desidera impostare è wmode: "diretto"
. Questa riga va nella sezione "params" del tuo codice HTML. Ecco, questo dovrebbe aiutare a ridurre drasticamente lo strappo. Se vuoi sapere perché, guarda la pagina di Adobe sull'accelerazione hardware. Spiega un po 'su entrambi i livelli di accelerazione hardware. Per ulteriori informazioni, consulta questo articolo approfondito.
Sì; un'altra cosa da ricordare è che, più oggetti hai sullo schermo, più evidente diventerà lo strappo. Gli oggetti più piccoli non sono solitamente influenzati dai problemi di sincronizzazione V, ma gli elementi sullo schermo che sono grandi lo rendono molto ovvio, quindi tenere il numero di oggetti di grandi dimensioni al minimo è una buona idea.
Inoltre, usando bitmapData.lock ()
e bitmapData.unlock ()
è raccomandato e ha aiutato alcune persone con questo problema. Il blocco di un oggetto BitmapData impedisce di ridisegnare qualsiasi bitmap fino a quando non viene sbloccato, che è una buona idea se è necessario apportare più modifiche tra i frame. Per saperne di più, dai un'occhiata a questo post del blog.
Puoi fare alcune cose per ridurre lo strappo ma non puoi eliminarlo completamente. Riduzione della quantità di oggetti di grandi dimensioni, impostazione wmode: "diretta"
e l'utilizzo del blocco bitmap è il modo migliore per ridurre lo strappo.