Frage

in AS3, gibt es ein Programm oder eine Funktion eine RGB-Farbe (z.B. 0xFF0000) und einen Alpha-Wert (z.B. 0,5) in einen 32-Bit-A ARGB Wert zu konvertieren?

Und von ARGB auf RGB + Alpha?

Eine Erklärung: a BitmapData- kann über die ARGB-Wert in seinem Konstruktor nehmen, aber Formen in Sprites Füllung dauert in der Regel RGB-Werte. Ich würde die oben genannten Dienstprogramme wie Farben zusammenpassen zu gewährleisten.

War es hilfreich?

Lösung

var argb  : int = (alpha<<24)|rgb;
var rgb   : int = 0xFFFFFF & argb;
var alpha : int = (argb>>24)&0xFF;

Andere Tipps

A, R, G, B ist ein Format von Grafikkarten verwendet für "Strukturmisch" und Transparenz in einer Textur zu ermöglichen. Die meisten Systeme verwenden nur 8 Bit für R, G und B, so dass ein weiteren 8bits frei läßt aus einer 32-Bit-Wortgröße, die in PCs üblich ist.

The mapping is:

For Bits:
33222222 22221111 11111100 00000000
10987654 32109876 54321098 76543210

AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
00000000 RRRRRRRR GGGGGGGG BBBBBBBB

So etwas wie folgt aus:

private function toARGB(rgb:uint, newAlpha:uint):uint{
  var argb:uint = 0;
  argb = (rgb);
  argb += (newAlpha<<24);
  return argb;
}

private function toRGB(argb:uint):uint{
  var rgb:uint = 0;
  argb = (argb & 0xFFFFFF);
  return rgb;
}

Wenn alpha kann mit 8 Bits dargestellt wird, ist es möglich. Karte nur jede Region Ihres 32-Bit-ARGB-Wert für die entsprechende Variable, zum Beispiel

0x0ABCDEF1

alpha - 0x0A

rot - 0xBC

grün - 0xDE

blau - 0xF1

private function combineARGB(a:uint,r:uint,g:uint,b:uint):uint {
            return ( (a << 24) | ( r << 16 ) | ( g << 8 ) | b );
        }

Ich kann nicht wirklich etwas mehr zu den ausgezeichneten Antworten füge jedoch über mehr vereinfachend ausgedrückt, die Alpha-Werte die letzten beiden Ziffern im uint sind zum Beispiel

//white
var white:uint = 0xFFFFFF;

//transparent white
var transparent:uint = 0xFFFFFFFF;

Waage wie es üblich ist, 00 = 1 FF = 0 ist.

Hope, das hilft

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