Question

as3, est-il un utilitaire ou une fonction pour convertir une couleur RVB (par exemple 0xFF0000) et une valeur alpha (par exemple 0,5) dans une valeur de A ARGB 32 bits?

Et de ARVB RGB + alpha?

Quelques explications: une BitmapData peut prendre une valeur ARGB dans son constructeur, mais le remplissage des formes dans sprites prend habituellement des valeurs RVB. Je voudrais que les services mentionnés ci-dessus pour assurer les couleurs correspondent.

Était-ce utile?

La solution

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

Autres conseils

A, R, G, B est un format commun utilisé par les cartes vidéo pour permettre "le mélange de texture" et la transparence dans une texture. La plupart des systèmes utilisent uniquement 8bits pour R, G, B et donc qui laisse un autre 8bits libre sur une taille de mot de 32 bits qui est commun dans les PC.

The mapping is:

For Bits:
33222222 22221111 11111100 00000000
10987654 32109876 54321098 76543210

AAAAAAAA RRRRRRRR GGGGGGGG BBBBBBBB
00000000 RRRRRRRR GGGGGGGG BBBBBBBB

Quelque chose comme ceci:

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

Si alpha peut être représenté avec 8 bits, il est possible. Qu'élaborer chaque région de votre valeur ARGB 32 bits pour la variable correspondante, par exemple

0x0ABCDEF1

alpha - 0x0A

rouge - 0xBC

vert - 0xDE

bleu - 0xF1

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

Je ne peux vraiment rien ajouter aux excellentes réponses ci-dessus, mettent cependant plus simplistes, les valeurs alpha sont les deux derniers chiffres du uint, par exemple

//white
var white:uint = 0xFFFFFF;

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

L'échelle est comme d'habitude, 00 = 1 FF = 0.

Hope this helps

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top