Sto implementando un gioco HTML5 utilizzando canvas. Ora sto pensando di creare tutti gli overlay di testo come tooltip, speechbubbles, infowindows e così via usando elementi HTML con posizione assoluta sulla tela. Quindi posso usare molti effetti e transizioni offerte CSS3.Mixing canvas e elementi CSS3
Ma non sono sicuro delle prestazioni. Questi overlay devono essere aggiunti e rimossi in modo casuale (è qualcosa di simile a MMORPG, quindi ci saranno un sacco di speechbubbles e così via).
Probabilmente ci sono 2 domande per quanto riguarda le prestazioni:
DOM traversal per aggiungere/rimuovere. Forse una cache può aiutare?
HTML e CSS3 stesso.
L'altra opzione è di gestire questi elementi nell'area di disegno stesso, disegnandoli per ogni fotogramma. Ma forse ho ancora una volta una penalizzazione delle prestazioni, a causa del codice extra, dei timeout e cose che dovrei aggiungere, per ottenere effetti simili come in CSS3. E comunque la trasversalità di alcune strutture dati sarebbe necessaria.
Eventuali pareri, pareri, esperienze?
Grazie in anticipo.
I tempi di attraversamento del DOM possono essere ridotti memorizzando nella cache i riferimenti ai vostri elementi "importanti"; Mantengo spesso un hash di someUniqueId => DOMElement per questo scopo. L'id può essere memorizzato come attributo data- * sui tuoi elementi per aiutare con questo schema. Per quanto riguarda il mix di CSS3 con Canvas, mi sono interrogato su questa strategia (+1).La trasformazione (coordinate di tela -> coordinate dello schermo) dovrà essere ben astratta o finirai con un casino cercando di capire dove posizionare i tuoi elementi regolari sulla parte superiore della tela. –