ActionScript Learning 101102

11.2.2010

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


category : ActionScript / Flash

Demonstrations

Feature Samples

Author

虹村 マキオウ (nizimura makiou)

猫と太極拳を愛する横浜在住のフリーランスクリエイターです。

logo

Demo and Sample

Category