Frage

Ich kann nicht in meiner AS1 Anwendung zu arbeiten. Ich bin mit der Color.setTransform Methode.

Bin ich folgende Korrekturen Objekterstellung in das Denken bei der Umwandlung einer Farbe Weiß führen sollte?

var AColorTransform = {ra: 100, rb: 255, ga: 100, GB: 255, ba: 100, bb: 255, aa: 100, ab: 255};

Und dies zu schwarz?

AColorTransform = {ra: 100, rb: -255, ga: 100, GB: -255, ba: 100, bb: -255, aa: 100, ab: -255};

Ich las auf einigen Websites, die setRGB oder setTransform Aufruf möglicherweise nicht alle tatsächlich die Anzeigefarbe ändern, wenn das Objekt, das Sie die Operation gerade ausführen auf eine Art dynamischen Verhalten hat. Weiß jemand mehr über diese Situationen? Und wie die Farbe unter allen Umständen ändern?

Viele Grüße.

War es hilfreich?

Lösung

Sie war bereits eine lange Zeit, da ich etwas AS1 hätte zu tun ist, aber ich werde mein Bestes tun.

Der Grundcode für einen Color.setTransform () sieht wie folgt aus ...

var AColorTransform = {ra:100, rb:255, ga:100, gb:255, ba:100, bb:255, aa:100, ab:255};
var myColor = new Color(mc);
myColor.setTransform(AColorTransform);

... wo mc ein MovieClip- auf der Bühne irgendwo ist.

Beachten Sie, dass Sie fragen über Transformation , die ihrer Natur bestimmt ist Farben von , was sie sind etwas anderes zu verwandeln. Wenn Sie eine bestimmte Farbe (wie schwarz oder weiß), um zuverlässig malen wollen, sind Sie in der Regel weit besser mit setRGB, die wie folgt aussehen:

var myColor = new Color(mc);
//set to black
myColor.setRGB(0x000000);
//or set to white
myColor.setRGB(0xFFFFFF);

Diese arbeiten zuverlässig, obwohl es können einige gotchas sein. Im Allgemeinen, nur nicht vergessen, dass die Farbe der spezifischen MovieClip- angebracht ist ... also wenn das MovieClip- außerhalb des Bereichs fällt (dh es verschwindet aus der Timeline) Ihre Farbe wird damit gelöscht werden.


Lesen Sie weiter nur, wenn Sie Farbtransformation besser verstehen wollen:

Lassen Sie uns die Komponenten dieser Farbe aussehen verwandeln.

    a (multiplier 0 > 100%)   b(offset -255 > 255)
r       ra                       rb

g       ga                       gb

b       ba                       bb

a       aa                       bb

Es sind vier Kanäle (r, g, b und a). Die ersten drei sind für Rot, Grün und Blau, und die letzte für Alpha (Transparenz). Jeder Kanal hat einen 'A' -Komponente und ein 'B' -Komponente, so ra, rb, ga, gb, usw. Die 'A' Komponente ist ein Prozentsatz-Multiplikator. Das heißt, es wird durch den Prozentsatz in diesem Wert jeden vorhandenen Kanal multiplizieren. Die ‚B‘ Komponente ist ein Offset. So ‚ra‘ multipliziert den vorhandenen roten Kanal. ‚Rb‘ gleicht sie. Wenn Ihr roter Kanal beginnt als ‚FF‘ (voll auf rot), Einstellung ra: 100 keine Auswirkung, da keine Änderung FF um 100% ergibt multipliziert wird. Und falls rot beginnt bei ‚00‘ (kein rot überhaupt), kein Wert von ‚ra‘ wird keine Auswirkungen haben, da (wenn Sie Ihre Shakespeare erinnern) zweimal nichts ist immer noch nichts. Dinge in-zwischen vervielfachen, wie man erwarten würde.

Versätze werden nach der Multiplikation hinzugefügt. So können Sie mit einem Wert multiplizieren, dann versetzt es:

r (result red color) = (RR * ra%) + rb
g (result green color) = (GG * ga%) + gb
b (result blue color) = (BB * ba%) + bb
a (result alpha) = (AA * aa%) + ab

Beispiel: RR = 128 (hex 0x80), ra = 50 (50% oder 0,5), rb = -20

resultierender Rotkanal: (128 * 0,5) + (-20) = 44 (hex 0x2C)

Ehrlich gesagt, das alles bekommt so verwirrend, dass ich dazu neigen, die einfache geistige Gesundheit zu vermeiden Transformationen zusammen und gehen mit dem viel einfacheren setRGB () zu bevorzugen.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top