Flashでグラデーションを配列で返すクラスを制作する。
グラデーションを決められたステップ数で分割して、配列にして返すアクションを制作する。
グラデーションの開始色、終了色とステップ数を指定すると、グラデーションをステップ数で分割して、カラーを16進数で配列に代入する。
SAMPLE VIEW CODE
package {
import flash.display.*;
public class NMain extends MovieClip {
//-------------------------------------------------------------------------------- Properties
private var _this:*;
private var _stage:Stage;
//-------------------------------------------------------------------------------- Constractor
public function NMain() {
_this = this;
_stage = stage;
_stage.scaleMode = StageScaleMode.NO_SCALE;
_stage.align = StageAlign.TOP_LEFT;
Init();
}
//-------------------------------------------------------------------------------- Function
/**
* Init
*/
public function Init():void {
var dots = new MovieClip();
dots.x = Math.round(_stage.stageWidth / 2);
dots.y = Math.round(_stage.stageHeight / 2);
_this.addChild(dots);
var dotsize = 30;
var radius = 180;
var dotlength = 27;
var nm_gradation = new NM_Gradation();
var cols_1 = nm_gradation.Colors(0xE4007F, 0x009944, 10);
var cols_2 = nm_gradation.Colors(0x009944, 0x00A0E9, 10);
var cols_3 = nm_gradation.Colors(0x00A0E9, 0xE4007F, 10);
cols_1.pop();
cols_2.pop();
cols_3.pop();
var colors = cols_1.concat(cols_2);
colors = colors.concat(cols_3);
for(var i = 0; i < dotlength; i++) {
var radian = i * (360 / dotlength) / 180 * Math.PI
var dot = new MovieClip();
dot.graphics.beginFill(colors[i]);
dot.graphics.drawRect(-dotsize / 2, -dotsize / 2, dotsize, dotsize);
dot.graphics.endFill();
var dot_mat = dot.transform.matrix;
dot_mat.translate(radius, 0);
dot_mat.rotate(radian);
dot.transform.matrix = dot_mat;
dots.addChild(dot);
}
}
}
}
package {
public class NM_Gradation extends Array {
//-------------------------------------------------------------------------------- Properties
//-------------------------------------------------------------------------------- Constractor
public function NM_Gradation() {
}
//-------------------------------------------------------------------------------- Function
/**
* Gradation Colors
*/
public function Colors(startcolor:uint, endcolor:uint, step:uint):Array {
var gradation = new Array();
var s_r = startcolor >> 16;
var s_g = startcolor >> 8 & 0xFF;
var s_b = startcolor & 0xFF;
var e_r = endcolor >> 16;
var e_g = endcolor >> 8 & 0xFF;
var e_b = endcolor & 0xFF;
var step_r = (e_r - s_r) / step;
var step_g = (e_g - s_g) / step;
var step_b = (e_b - s_b) / step;
var new_r = s_r;
var new_g = s_g;
var new_b = s_b;
/*
trace("s_r:" + s_r);
trace("e_r:" + e_r);
trace("step_r:" + step_r);
*/
for (var i = 0; i < step; i ++) {
var newcolor:uint = new_r << 16 | new_g << 8 | new_b;
gradation[i] = "0x" + newcolor.toString(16);
new_r += step_r;
new_g += step_g;
new_b += step_b;
//trace(i +":"+ newcolor)
}
gradation[step - 1] = endcolor;
return gradation;
}
}
}