Prima di tutto, dirò che il contesto qui è Actionscript 3.0 (IDE: Flashbuilder) insieme allo Starling Framework.Rendering mappa tile AS3 (con migliaia di tile)
Quindi, voglio creare una mappa affiancata che possa essere utilizzata per un platform o qualcosa di simile.
Voglio usare piastrelle di 8x8 pixel su uno stage da 800x600 pixel, e il problema che sto avendo è che non so come aggiungere questi oggetti di piastrelle 7500+ allo stage senza ridurre drasticamente il framerate.
Ho scoperto che il calo delle prestazioni deriva dall'aggiunta di ogni piastrella allo stage, non dall'inizializzazione di ogni oggetto Tile.
So che non sto dando molte informazioni specifiche, ma quello che chiedo è se c'è un modo standardizzato per disegnare migliaia di oggetti statici sul palco senza una perdita di prestazioni. Sento che c'è un modo, e devo ancora trovarlo.
Aggiornamento:
Dopo tutto il vostro gentile aiuto, ho trovato quello che sembra essere una grande soluzione. All'inizio volevo implementare la soluzione di Amy, usando copyPixels() e draw() per creare dati bitmap di grandi dimensioni per l'intera mappa e quindi renderizzarli sullo schermo. Poi, però, volevo sapere se c'era un equivalente Starling a questo, perché tutto sarebbe stato molto più semplice se non avessi dovuto mescolare Starling con Native Flash.
Grazie ad Amy, ho esaminato ancora una volta la classe RenderTexture di Starling e ho scoperto che usando i suoi metodi "drawBundled()" e "draw()", avrei potuto facilmente disegnare tutte le tessere in una RenderTexture, e quindi metti il RenderTexture in un'immagine (Starling's Image Class) e poi aggiungi questa immagine allo schermo.
Questa soluzione è un milione di volte più veloce delle sciocche soluzioni lente che ho provato prima, con sprite livellanti e simili. È più veloce sia nel suo tempo di inizializzazione e sembra che non ci sia alcun calo nel framerate mentre l'immagine del renderTexture è sullo schermo.
L'unica cosa che voglio testare è se è facile aggiornare la grafica di una tessera durante il gameplay. Supponiamo che, se l'acqua si diffonde da una fonte (o qualcosa del genere) e una tessera "Erba" dovesse diventare una tessera "Acqua", la RenderTexture e la sua immagine sarebbero in grado di cambiare il loro aspetto senza una sorta di ritardo o di singhiozzo delle prestazioni. Lo metterò alla prova presto.
Grazie a tutti per il vostro aiuto!
Grazie, un punto di partenza come questo che mi spinge nella giusta direzione è proprio quello di cui avevo bisogno! – Brucef
Prego :) –
ora devo solo capire come utilizzare gli oggetti di visualizzazione flash nativi funziona con Starling Framework ... – Brucef