2010-12-06 10 views

Antwort

48

Ich habe eine simple example einer Flagge im Wind winken erstellt. Es ist hässlich, weil ich die Flagge zeichne, um die Leinwand zu füllen (anstatt die Polsterung zu lassen, damit die Flagge hineinwinken kann), und weil ich keinen Versuch mache, Anti-Aliasing zu machen. Ich habe auch keinen Versuch unternommen, 3D-Shading bereitzustellen, was den Effekt unterstützen würde.

Ich kann 64fps mit einer 320px breiten Flagge in Chrome v8 auf meinem Computer bekommen. Wenn Sie die Geschwindigkeit selbst testen möchten, ändern Sie die fps in Zeile 59 in 1000 und entfernen Sie die Zeilen 63 und 82; Es gibt dann alle 100 Frames fps-Informationen an die Konsole aus.

Dies funktioniert nicht in IE8-, auch nicht mit ExCanvas, weil es dort keinen Mechanismus gibt, um auf einzelne Pixeldaten zuzugreifen.

Bearbeiten: Nur zum Spaß, habe ich die Probe aktualisiert, um die Wellen zu schattieren, wie sie durch das Bild gehen.

Edit2: Für mehr Spaß, fügte ich Padding der Flagge Zeichnung (kein Clipping mehr) und fügte ich einen "Squeeze" -Faktor, mit dem Sie die rechte Seite der Flagge größer oder kleiner als das Original (für Perspektive). Da es die Leistung etwas verlangsamt, habe ich es als a separate sample hochgeladen.

                      US Flag waving in the wind (static screenshot)

+1

Das ist großartig, ** + 1 ** =) –

+3

Schließlich, hier ist [ein letztes Beispiel] (http://phrogz.net/tmp/gkheadwave.html) zeigt, wie Sie dies mit einem Bild verwenden, das Sie selbst laden (von der gleiche Domain) anstelle einer gezeichneten Flagge. – Phrogz

+0

+1 für die Demo. :) Ich nehme meine Antwort dann zurück. (Ihr erstes "einfaches Beispiel" funktioniert aus irgendeinem Grund nicht, die anderen beiden sind jedoch in Ordnung.) – casablanca