ゲームが作れるようになるまでがんばる日記

ゲーム制作のことを中心にゲームに関することを書いています

RGBAそれぞれの値を取得

32ビットカラーを表現するのにunsigned intで0xff112233とすることがある。この値から各RGBAの値を取得するには、右ビットシフトした後、論理積ANDを取れば良い。
たとえば、ActionScript3では32ビットカラーの値は0xAARRGGBBというようにアルファ、赤、緑、青の順に並んでいる。ここから青の値を取るには0xffとANDを取る。緑は8ビットシフトさせてから。赤は16ビットシフトさせてから。アルファは24ビットシフトさせてからとなる。

var color:uint = 0xff112233;
var alpha:uint = color >> 24 & 0xff;
var red:uint = color >> 16 & 0xff;
var green:uint = color >> 8 & 0xff;
var blue:uint = color & 0xff;

アルファを取得するときにはちょっと注意が必要。アルファよりも左には値が無いのだから0xffとANDを取る必要が無いと思うが、>>演算子は符号を保持したまま右ビットシフトを行うため、アルファの値が0x80以上の場合は空いたビットに1が入ってしまう。そのため0xffとANDを取る必要が出てくる。あるいは空いたビットに0が入る>>>演算子を使えば良い。

var color:uint = 0xff000000;
var alpha:uint = color >>> 24;


wonderfl build flash online | 面白法人カヤック