2012-08-27 20 views
5

Ich möchte es so machen, dass ein CCNode (könnte CCLayer, CCSprite, usw.) alle seine Kinder mit einem Shader maskieren können, so dass sie progressiv maskiert werden können, wie sie die Grenzen des Knotens nähern, ohne zu ändern ihr Opazitätswert direkt. Zum Beispiel könnte ein Menü wie folgt aussehen:Wie maskiert man Sprites in cocos2d durch das Alpha eines Gradienten?

Menu with items that fade near the edges

Die Maske in diesem Fall würde ein Gradient sein, das könnte wie folgt aussehen:

enter image description here

Antwort

0

Die grundlegende Tutorial für die Erstellung von Ein Maskierungs-Sprite ist unter Ray Wenderlich's website verfügbar, obwohl ich nicht sicher bin, ob es auch möglich sein wird, untergeordnete Knoten zu maskieren. Wenn nicht, dann müssen Sie wahrscheinlich CCRenderTexture verwenden, untergeordnete Knoten zur Textur zeichnen und schließlich mit dem im Tutorial erstellten Maskierungsknoten maskieren.

+0

Ich habe dieses Tutorial gesehen, aber es beantwortet meine Frage nicht. – GoldenJoe

+0

GoldenJoe, Sie können Ihre Aufgabe nicht lösen, ohne das Ziel zu rendern oder Gradienten Alpha in alle Kinder zu implementieren. – brigadir

+0

Ich bin nicht ganz klar, wie cocos2d sein Rendering macht, aber ist nicht jeder Knoten nur ein Quad mit einer Textur? Wenn die untergeordneten Elemente zu übergeordneten Knoten gerendert werden, sollte der übergeordnete Knoten funktionieren. Ich habe jetzt keine Ahnung, wie ich das jetzt machen soll ... – GoldenJoe

0

Ich weiß, dass dies wahrscheinlich nicht der Mechanismus ist, den Sie wollen, aber ich wollte vor kurzem einen Gradienten Alpha, der in einer kreisförmigen Weise variiert. Ich hatte etwas Text, der sich um ein Sprite drehen würde und ich wollte nur, dass es sichtbar war, wenn es oben im Kreis war.

Der einfachste Ansatz für mich bestand darin, ein Sprite zu erstellen, das ein kreisförmiges Band war, bei dem das Band am unteren Rand ganz "schwarz" war und oben vollständig transparent war.

Durch oben in der z-Reihenfolge, den Text, bekam ich dann den Effekt, den ich suchte. Ich kann mir vorstellen, dass Sie auf diese Weise die gleiche Art von Effekt erzielen können.

Um es in Aktion zu sehen, werfen Sie einen Blick auf das Hauptmenü meiner App, Claustrophobic.