Domanda

In AS3, c'è un'utilità o funzione per convertire un colore RGB (es 0xFF0000) ed un valore alfa (ad esempio 0,5) in una Un valore ARGB a 32 bit?

E da ARGB a RGB + Alpha?

Qualche spiegazione: un BitmapData può assumere un valore ARGB nel suo costruttore, ma riempiendo forme in sprites richiede solitamente valori RGB. Vorrei i suddetti programmi di utilità per garantire i colori corrispondono.

È stato utile?

Soluzione

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

Altri suggerimenti

A, R, G, B è un formato comune utilizzato da schede video per consentire la "texture blending" e la trasparenza in una texture. Molti sistemi usano soltanto 8bits per R, G e B in modo che lascia un altro 8bits libera su una dimensione di parola a 32 bit che è comune nei PC.

The mapping is:

For Bits:
33222222 22221111 11111100 00000000
10987654 32109876 54321098 76543210

AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
00000000 RRRRRRRR GGGGGGGG BBBBBBBB

Qualcosa di simile a questo:

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;
}

Se alfa può essere rappresentato con 8 bit, è possibile. Basta mappare ogni regione del vostro valore ARGB a 32 bit per la variabile corrispondente, per esempio

0x0ABCDEF1

alfa - 0x0A

rosso - 0xBC

verde - 0xDE

blu - 0xF1

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

Non posso davvero aggiungere qualcosa di più per le ottime risposte di cui sopra, tuttavia messo più semplicisticamente, i valori alfa sono le ultime due cifre del uint, ad esempio

//white
var white:uint = 0xFFFFFF;

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

La scala è come al solito, 00 = 1 FF = 0.

Spero che questo aiuti

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top