Vor ein paar Tagen hat mir mein Kollege einen Spezialeffekt gezeigt, bei dem es sich um ein Puzzle handelt. Der Unterschied besteht darin, dass es sich bei dem Puzzle um eine Animation handelt. Er bat mich, eine DEMO zu machen, also habe ich eine Weile selbst daran gearbeitet, und es war tatsächlich nicht schwierig. Mit Leinwand geht das ganz einfach. Daher ist dieser Blogbeitrag nicht für Experten geeignet. . . . Ich habe es einfach nur zum Spaß geschrieben.
Rendering:
Zumindest als ich das zum ersten Mal sah, dachte ich, dass es ziemlich neu ist, also dachte ich daran, es zum Spaß zu machen. Wenn du denkst, dass das Poster draußen ist, gib mir bitte einen Daumen nach oben
Beginnen wir ohne weitere Umschweife mit DEMO: Video-Puzzle (Möglicherweise müssen Sie eine Weile warten, bis Sie den Effekt sehen. Ich habe einen Videolink direkt aus w3school erstellt. Sie können ihn per Drag-and-Drop ziehen. Es ist (sehr einfach und kann immer noch einige Fehler enthalten. Schließlich handelt es sich nur um eine DEMO zum Spaß.) Ein weiterer Punkt ist, dass das direkte Zeichnen des aktuellen Frames des Videos in die Leinwand anscheinend nicht unterstützt wird . . . Zumindest habe ich es auf meinem iPad angeschaut und festgestellt, dass ich nicht zeichnen kann. Wenn jemand weiß, wie man dieses Problem löst, wäre ich sehr dankbar
Prinzip: Jedes Puzzleteil ist eine Leinwand, und es ist auch eine Leinwand außerhalb des Bildschirms erforderlich. Erstellen Sie zunächst ein Video-Tag
).
ctx2.drawImage(cs , -this.cols*this.w , -this.rows*this.h , vw , vh);
Dann. . . . Das Prinzip ist so einfach. Ich möchte Sie später daran erinnern, dass Sie die Geschwindigkeit begrenzen müssen, wenn Sie requestAnimationFrame zum Durchlaufen verwenden. Wie unten beschrieben, wird empfohlen, alle 30 Millisekunden abzurufen ~50 Millisekunden. Wenn der Wert zu niedrig ist, stürzt der Browser ab. Wenn das Video hängen bleibt: