Memorizzazione nella cache di oggetti di visualizzazioneFlash Player 9 e versioni successive, Adobe AIR 1.0 e versioni successive Man mano che i progetti di Flash crescono di dimensioni, indipendentemente dal fatto che si stia creando un'applicazione o delle animazioni con script complesse, è necessario valutare gli aspetti legati alle prestazioni e all'ottimizzazione. Quando avete un contenuto che rimane statico (ad esempio un'istanza di Shape sotto forma di rettangolo), Flash Player o AIR non ottimizzano il contenuto. Di conseguenza, quando cambiate la posizione del rettangolo, Flash Player o AIR deve ridisegnare l'intera istanza di Shape. Per migliorare le prestazioni dei file SWF, potete memorizzare nella cache oggetti di visualizzazione specifici. L'oggetto di visualizzazione è una superficie, essenzialmente una versione bitmap dei dati vettoriali dell'istanza, vale a dire dei dati che non si intende modificare in modo significativo nel corso del file SWF. Pertanto, le istanze per cui è stata attivata la memorizzazione nella cache non vengono continuamente ridisegnate durante le riproduzione del file SWF; questo consente un rendering più rapido del file. Nota: potete aggiornare i dati vettoriali; quando eseguite l'aggiornamento, la superficie viene ricreata. Per questo motivo, i dati vettoriali memorizzati nella cache della superficie non devono restare immutati per tutto il file SWF.
L'impostazione della proprietà cacheAsBitmap di un oggetto di visualizzazione su true rende la cache dell'oggetto di visualizzazione una rappresentazione bitmap di se stessa. Flash Player o AIR crea un oggetto di superficie per l'istanza, rappresentato da una bitmap memorizzata nella cache invece che da dati vettoriali. Cambiando i limiti dell'oggetto di visualizzazione, la superficie viene ricreata anziché ridimensionata. Le superfici possono essere nidificate all'interno di altre superfici. La superficie secondaria copia la bitmap nella superficie principale. Per ulteriori informazioni, vedete la sezione Attivazione della memorizzazione di bitmap nella cache. Le proprietà opaqueBackground e scrollRect della classe DisplayObject si riferiscono alla memorizzazione della bitmap nella cache mediante la proprietà cacheAsBitmap. Nonostante si tratti di proprietà indipendenti l'una dall'altra, opaqueBackground e scrollRect funzionano in modo ottimale quando un oggetto viene memorizzato nella cache come bitmap; in altre parole, è possibile valutare i vantaggi, in termini di prestazioni, dell'uso delle proprietà opaqueBackground e scrollRect solo impostando cacheAsBitmap su true. Per ulteriori informazioni sullo scorrimento del contenuto di oggetti di visualizzazione, vedete la sezione Panoramica e scorrimento di oggetti di visualizzazione. Per ulteriori informazioni sull'impostazione di uno sfondo opaco, vedete la sezione Impostazione di un colore di sfondo opaco. Per informazioni sull'effetto maschera del canale alfa, che richiede l'impostazione della proprietà cacheAsBitmap su true, vedete la sezione Mascheratura degli oggetti di visualizzazione Quando attivare la memorizzazione nella cacheL'attivazione della funzione di memorizzazione nella cache di un oggetto di visualizzazione consente di creare una superficie; questo presenta diversi vantaggi, fra cui quello di consentire un rendering più rapido delle animazioni vettoriali complesse. L'attivazione della memorizzazione nella cache può essere utile in diversi casi. Nonostante questa funzione possa sembrare utile per migliorare le prestazioni dei file SWF in tutti i casi, in alcune situazioni questa funzione non solo non migliora le prestazioni, ma, anzi, le può peggiorare. In questa sezione vengono descritti i vari scenari in cui utilizzare la memorizzazione nella cache e i casi in cui è opportuno invece usare i normali oggetti di visualizzazione. Le prestazioni generali dei dati memorizzati nella cache dipendono dalla complessità dei dati vettoriali delle istanze, dalla quantità di dati modificati e dal fatto che sia stata impostata o meno la proprietà opaqueBackground. Se state modificando aree piccole, la differenza tra l'uso di una superficie e l'uso dei dati vettoriali è minima. Prima di distribuire l'applicazione, potrebbe essere utile provare entrambi gli scenari. Quando utilizzare la memorizzazione delle bitmap nella cacheSegue una descrizione degli scenari in cui l'attivazione della memorizzazione delle bitmap nella cache può comportare notevoli vantaggi.
L'attivazione della memorizzazione di bitmap nella cache in tutti questi scenari migliora la sensibilità e l'interattività dell'applicazione ottimizzando le immagini vettoriali. Inoltre, ogni volta che si applica un filtro a un oggetto di visualizzazione, la proprietà cacheAsBitmap viene automaticamente impostata su true, anche se è stata esplicitamente impostata su false. Cancellando tutti i filtri dall'oggetto di visualizzazione, la proprietà cacheAsBitmap ritorna sul valore sul quale era stata impostata. Quando evitare di utilizzare la memorizzazione delle bitmap nella cacheL'uso di questa funzione in circostanze errate può influire in maniera negativa sulle prestazioni del file SWF. Quando utilizzate la memorizzazione delle bitmap nella cache, tenete presenti le seguenti linee guida:
Attivazione della memorizzazione di bitmap nella cachePer attivare la memorizzazione di bitmap nella cache per un oggetto di visualizzazione, impostate la proprietà cacheAsBitmap dell'oggetto su true: mySprite.cacheAsBitmap = true; Può accadere che, dopo che avete impostato la proprietà cacheAsBitmap su true, l'istanza dell'oggetto di visualizzazione esegua automaticamente l'aggancio ai pixel su tutte le coordinate. Nel provare il file SWF, dovreste notare che il rendering delle animazioni vettoriali complesse viene eseguito più velocemente. Se si verifica una delle condizioni elencate di seguito, la superficie (bitmap memorizzata nella cache) non viene creata anche se cacheAsBitmap è impostata su true:
Matrici di trasformazione delle bitmap inserite nella cacheNelle applicazioni AIR per dispositivi mobili, impostate la proprietà cacheAsBitmapMatrix ognivolta che configurate la proprietà cacheAsBitmap. L'impostazione di questa proprietà consente di applicare una gamma più ampia di trasformazioni all'oggetto di visualizzazione senza attivare un nuovo rendering. mySprite.cacheAsBitmap = true; mySprite.cacheAsBitmapMatrix = new Matrix(); Quando impostate questa proprietà di matrice, potete applicare la trasformazione aggiuntiva seguente all'oggetto di visualizzazione senza reinserire l'oggetto nella cache:
Queste trasformazioni vengono applicate direttamente alla bitmap memorizzata nella cache. |
|