2011-01-16 14 views
0

Colortransform Die offizielle docs sagen:Tweaking ein Objekt

Sie haben die neue Colortransform() Konstruktor muss ein Colortransform Objekt erstellen, bevor Sie die Methoden des Colortransform-Objekt aufrufen kann.

So bedeutet das jedes Mal, wenn ich die Farbtransformation optimieren will, muss ich eine neue Instanz erstellen? Wenn dem so ist, scheinen die Setter-Eigenschaften ziemlich sinnlos zu sein und meine Tests zeigen, dass dies der Fall ist.

Also, wenn jeder machen ich fahren wollen sagen, dass die redOffset basierend auf Zeit (eine pulsierende Wirkung zu erzielen), muss ich manuell einen neuen ColorTransform erstellen alle Konstruktor args von this.transform.colorTransform:

var newRedOffset:Number = ... 
transform.colorTransform = new ColorTransform(
transform.colorTransform.redMultiplier, transform.colorTransform.greenMultiplier, 
transform.colorTransform.blueMultiplier, transform.colorTransform.alphaMultiplier, 

newRedOffset, transform.colorTransform.greenOffset, 
transform.colorTransform.blueOffset, transform.colorTransform.alphaOffset); 

Es scheint schrecklich, gibt es eine Abkürzung?

Antwort

2

anstatt mit Farbe Multiplikatoren und Alpha-Offsets zu tun, hier ist ein einfacher, gerade vorwärts Weg, um die Farbe eines Anzeigeobjekts zu ändern:

var ct:ColorTransform = new ColorTransform(); 
ct.color = 0xFF0000; //Simple Hex Color value 

myDisplayObject.transform.colorTransform = ct; 

diese Weise können Sie die Farbeigenschaft des gleichen Colortransform-Objekts ändern und wenden Sie es dann erneut auf Ihr Anzeigeobjekt an.

+0

, die Sie beschäftigen sich mit Unifarben, natürlich ist vorausgesetzt und nicht Farbe Manipulation von Bitmaps. – TheDarkIn1978

+0

Wie wird diese einzelne Farbe behandelt - entspricht sie nur dem Offset? –

+0

ja. Es ist ein großer Vorteil, wenn Sie keine spezifischen Einstellungen für die Multiplikatoren benötigen. Beachten Sie, dass Farbtransformationen auf das gesamte Anzeigeobjekt angewendet werden, einschließlich aller Filter wie Schlagschatten. aus den Dokumenten der Farbeigenschaft: http://help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/flash/geom/ColorTransform.html#color – TheDarkIn1978

2

Nein, tut es nicht. Sie können die Verwendung colortransform das Objekt bereits hat, aber Sie müssen es neu zuordnen, nachdem Sie die Werte geändert haben:

var trans:ColorTransform = sprite.transform.colorTransform; 
trans.blueOffset += 10; 
sprite.transform.colorTransform = trans; 
Verwandte Themen