Forked from: tkinjo's 色相 diff:124 色相環 色相環 @author tkinjo tkinjo forked:1favorite:8lines:58license : MIT License modified : 2009-10-30 00:51:27 Embed Tweet // forked from tkinjo's 色相 package { import flash.display.*; import flash.events.*; import flash.geom.*; [SWF(width="465", height="465", backgroundColor="0xffffff", frameRate="60")] /** * 色相環 * * @author tkinjo */ public class Main extends Sprite { private var stageWidth:Number = stage.stageWidth; private var stageHeight:Number = stage.stageHeight; private var stageCenter:Point = new Point( stageWidth / 2, stageHeight / 2 ); public function Main() { var bitmapData:BitmapData = new BitmapData( stageWidth, stageHeight, false ); bitmapData.lock(); for ( var i:int = 0; i < stageWidth; i++ ) { for ( var j:int = 0; j < stageHeight; j++ ) { bitmapData.setPixel( i, j, getColor( new Point( i, j ) ) ); } } bitmapData.unlock(); var bitmap:Bitmap = new Bitmap( bitmapData ); addChild( bitmap ); } private function getColor( point:Point ):uint { var pointFromStageCenter:Point = point.subtract( stageCenter ); var pointBearingFromStageCenter:Number = Math.atan2( pointFromStageCenter.y, pointFromStageCenter.x ) * 180 / Math.PI; if ( pointBearingFromStageCenter < 0 ) pointBearingFromStageCenter = pointBearingFromStageCenter + 360; return HSVtoRGB( pointBearingFromStageCenter, 1, 1 ); } private function HSVtoRGB( h:Number, s:Number, v:Number ):uint { var Hi:uint = ( h / 60 ) % 6; var f:Number = h / 60 - Hi; var p:Number = v * ( 1 - s ); var q:Number = v * ( 1 - f * s ); var t:Number = v * ( 1 - ( 1 - f ) * s ); switch( Hi ) { case 0: return toRGB255( v, t, p ); case 1: return toRGB255( q, v, p ); case 2: return toRGB255( p, v, t ); case 3: return toRGB255( p, q, v ); case 4: return toRGB255( t, p, v ); case 5: return toRGB255( v, p, q ); } return 0; } private function toRGB255( r:Number, g:Number, b:Number ):uint { return ( r * 255 << 16 ) + ( g * 255 << 8 ) + b * 255; } } } Code Fullscreen Preview Fullscreen narahater FlashFit nki2 umhr clockmaker larryzzl_fle.. fabure esukei bitmapData bitmapData subtract subtract stageWidth stageWidth stageHeight setPixel setPixel unlock unlock lock lock Point Point Math.atan2 Bitmap Math.atan2 Bitmap BitmapData sort new page view favorite forked pv381 forked from: 色相環 tkinjo forked:1 favorite:2lines:67 (diff:21)