wie zu zwingen, ein display-update in Leinwand
wenn ich zeichnen auf den canvas-Bereich eine Menge in schneller Abfolge, z.B. ein Kontext.fillRect in einer Schleife, Browser scheinen zu warten, bis die Schleife beendet wurde, bevor die Zeichnung angezeigt wird (eventuell via double-buffering)
Gibt es eine Möglichkeit zu zwingen, den browser, um die Anzeige zu aktualisieren, entweder explizit oder implizit nach jeder Ziehung Betrieb?
InformationsquelleAutor James Tauber | 2011-02-13
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es nicht wirklich, weil der double-buffering, dass Sie nicht die Ergebnisse sehen, aber eher, weil JavaScript im web-browser single-threaded. Wenn Sie in ähnlicher Weise erstellen Sie eine einzelne Schleife in JavaScript, dass immer wieder so etwas macht wie
myDiv.style.top = parseInt(myDiv.style.top) + 1 +"px";
Sie werden sehen, dass nichts sichtbar ändern in den browser—auch über viele Sekunden, bis Sie Ihre JavaScript-Ausführung beendet hat.Zeichnen Sie die änderungen und sehen die Ergebnisse auf dem Bildschirm, die Sie verwenden müssen
setInterval
odersetTimeout
Ausbeute Kontrolle an den browser zurück, bitten aber um code auszuführen, der irgendwann in der Zukunft.Beispielsweise zum zeichnen einer neuen, zufällig, zufällig farbige Rechteck auf den canvas 15-mal in einer Sekunde:
InformationsquelleAutor Phrogz