2013-11-01 14 views
7

Kann jemand ein Beispiel geben, wie man ein Bild von SKSpriteNode mit dem Sprite Kit von Apple progressiv verwischt? Nehmen wir beispielsweise an, der Benutzer berührt eine Schaltfläche auf dem Bildschirm, die dann den Hintergrund langsam (d. H. Progressiv) verschwimmen lässt, bis er einen bestimmten Schwellenwert erreicht. Idealerweise würde ich den Prozess auch gerne umkehren (z. B. dem Benutzer erlauben, das Bild durch Berühren des gleichen Knopfes zu entblocken).Wie kann man das Bild eines SKSpriteNodes mit dem Sprite Kit progressiv verwischen?

+1

Haben Sie sich SKEffectNode schon angesehen? – prototypical

Antwort

6

Es gibt zwei mögliche Wege auf, dies zu machen, verwenden beide SKEffectNodes

SKEffectNodes können Sie CI Filter auf einen Knoten angewendet werden sollen.

Es gibt einen CI-Filter für Gaußscher Weichzeichner. Erstellen Sie also einen SKEffectNode, weisen Sie ihm einen Unschärfefilter zu und fügen Sie die Schaltfläche als untergeordnetes Element hinzu.

Wie animieren Sie es?

Verwenden SKAction eine benutzerdefinierte Aktion zu erstellen, und die Parameter des Filters jedoch ändern, so kann dies nur langsam und nicht immer gibt den ‚progressiven‘ Unschärfe-Effekt erwarten, so, was ich tue, ist dies:

Ich erstelle einen Filter und SKEffectNode wie oben beschrieben, dann render ich das Ergebnis zu einer Textur, mit SKView.textureForNode. Ich füge dann die resultierende Textur zu einem Array hinzu, danach schleife ich das fort, um den Unschärfeeffekt oben auf das vorher erstellte Bild anzuwenden, bis ich eine festgelegte Anzahl von Bildern habe. Verwenden Sie dann die erstellten Texturen, um eine Animation mit SKAction.animateWithTextures zu erstellen. Nach meiner Erfahrung kommt das sehr gut heraus.