2つの色を混ぜてみる

2つの色を混ぜて中間色を求めるスクリプトが
必要になったのでググったらありました。

参照サイト: nondelion.com 2つの色の中間色を求める方法

~方法~

1, 2色とも16進数からRGB値を割り出す(ビットマスクを利用します)

2, RGB値を足す

3, また16進数に戻す

こんな感じ。

以下がサンプルソースになります

package
{
import flash.display.Sprite;

public class Main extends Sprite
{
//黒色
private var color1:Number = 0×000000;
//赤色
private var color2:Number = 0xff0000;

public function Main():void
{
init();
}

private function init():void
{
var sp:Sprite = new Sprite();

//赤と黒の中間色
var mixColor:Number = setMiddleColor(color1, color2);

sp.graphics.beginFill(mixColor);
sp.graphics.drawRect(0, 0, 100, 100);
sp.graphics.endFill();
addChild(sp);

}
private function hex2rgb(n:Number):Array
{
var rgbArray:Array = new Array(3);
rgbArray[0] = ( n >> 16 ) & 0xff;
rgbArray[1] = ( n >> 8 ) & 0xff;
rgbArray[2] = n & 0xff;
return rgbArray;
}

private function setMiddleColor(firstColor:Number, secondColor:Number):uint
{
var firstRGB:Array = hex2rgb(firstColor);
var secondRGB:Array = hex2rgb(secondColor);
var red:Number = int((firstRGB[0] + secondRGB[0]) * 0.5);
var green:Number = int((firstRGB[1] + secondRGB[1]) * 0.5);
var blue:Number = int((firstRGB[2] + secondRGB[2]) * 0.5);
var hex:uint = red << 16 | green << 8 | blue;
return hex;
}
}

}

>>サンプルASのダウンロードはこちらから

Tags:

Leave a Reply