C'è un modo per estendere dinamicamente la tela HTML5 senza cancellare ciò che è disegnato su di esso?
-
18-09-2019 - |
Domanda
quando l'uscita raggiunge la parte inferiore della pagina, mi piacerebbe la tela di estendere automaticamente in modo che possa andare avanti. Ho provato a impostare la proprietà canvas.height, ma si cancella la finestra. Esiste un modo per fare questo?
Soluzione
Quello che faccio io:
creare canvas fittizio con stessa taglia come la tela.
dummyCanvas.getContext('2d').drawImage(yourCanvas, 0, 0);
newCanvas = recreate(yourCanvas);
newCanvas.getContext('2d').drawImage(dummyCanvas);
Non molto bella, soprattutto nella vostra situazione in cui richiederebbe ricreare la tela 50+ volte al secondo ... interessato a vedere altre risposte ... Funziona per me perché ho appena ridimensionare la tela quando il clientWidth / clientHeight cambiamenti [window.onresize]
Altri suggerimenti
So che questo è una sorta di vecchio ora, tuttavia:
Non è necessario ricreare la tela come explaines ItzWarty. Si può fare questo:
<html>...
<canvas id="canvas"></canvas>
<canvas id="buffer" style="display:none;"></canvas>
...
</html>
Quindi questo sarà il tuo javascript:
var canvas = document.getElementById('canvas');
var buffer = document.getElementById('buffer');
window.onresize = function(event) {
var w = $(window).width(); //Using jQuery for easy multi browser support.
var h = $(window).height();
buffer.width = w;
buffer.height = h;
buffer.getContext('2d').drawImage(canvas, 0, 0);
canvas.width = w;
canvas.height = h;
canvas.getContext('2d').drawImage(buffer, 0, 0);
}
Qui si cambia solo la dimensione delle tele, e si copia sull'immagine. Non sono sicuro, ma credo che le prestazioni sono un po 'meglio, ed è, a mio parere più semplice e facile da capire.