/**
* Copyright mmlemon_ ( http://wonderfl.net/user/mmlemon_ )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/7HhP
*/
package
{
//import components.Arc;
import flash.display.Sprite;
import flash.events.Event;
import flash.filters.BlurFilter;
import flash.geom.Point;
import flash.geom.Matrix;
import flash.display.BlendMode;
import flash.display.GradientType;
[SWF(backgroundColor=0x0,frameRate=60,width=465,height=465)]
public class Circle3 extends Sprite
{
private static const CENTER:Point = new Point(465/2, 465/2);
private var m_arcNum:uint = 10;
private var arcs:Vector.<Arc>;
private var colorContainer:Sprite;
private function init():void
{
arcs = new Vector.<Arc>();
for(var i:uint=0;i < m_arcNum; i++)
{
createArc();
arcs[i].rotation = 360/m_arcNum*i;
}
initColorContainer();
addEventListener(Event.ENTER_FRAME, onLoop, false, 0,false);
}
private function initColorContainer():void
{
colorContainer = new Sprite();
var matrix:Matrix = new Matrix();
matrix.createGradientBox(800, 600, 0, 0, 0);
var type:String = GradientType.RADIAL;
var colors:Array = [0xff0000, 0xffff00, 0x00ff00, 0x00ffff, 0x0000ff, 0xff00ff];
var alphas:Array = [1, 1, 1, 1, 1, 1];
var ratios:Array = [0, 50, 100, 150, 200, 255];
colorContainer.graphics.beginGradientFill(type, colors, alphas, ratios, matrix);
colorContainer.graphics.drawRect(0, 0, 800, 600);
colorContainer.graphics.endFill();
// 要するにこれで抜いた感じ。
colorContainer.blendMode = BlendMode.SUBTRACT;
addChild(colorContainer);
}
private function createArc():void
{
var arc:Arc = new Arc(6);
arc.x = CENTER.x;
arc.y = CENTER.y;
arc.arcWidth = 200;
arc.arcHeight = 100;
addChild(arc);
arcs.push(arc);
}
private function onLoop(event:Event):void
{
for(var i:uint=0; i < m_arcNum; i++)
{
arcs[i].rotation+=2;
}
}
public function Circle3()
{
init();
}
}
}
import flash.display.BlendMode;
import flash.display.CapsStyle;
import flash.display.JointStyle;
import flash.display.LineScaleMode;
import flash.display.Sprite;
import flash.display.StageQuality;
import flash.filters.BlurFilter;
class Arc extends Sprite
{
private var m_thickness:Number;
private var m_arcWidth:Number;
private var m_arcHeight:Number;
public function get arcWidth():Number
{
return m_arcWidth;
}
public function set arcWidth(value:Number):void
{
m_arcWidth = value;
updateShape();
}
public function get arcHeight():Number
{
return m_arcHeight;
}
public function set arcHeight(value:Number):void
{
m_arcHeight = value;
updateShape();
}
private function updateShape():void
{
updateArc();
width = m_arcWidth;
height = m_arcHeight;
}
private function updateArc():void
{
graphics.clear();
graphics.lineStyle(m_thickness, 0xffffff, 1, false,
LineScaleMode.VERTICAL, CapsStyle.ROUND, JointStyle.ROUND, 3);
var lines:uint = 5;
for(var i:uint=1; i < lines; i++)
{
graphics.moveTo(0,0);
graphics.curveTo(m_arcWidth/i, m_arcHeight*i, m_arcWidth*i, m_arcHeight*i);
}
graphics.endFill();
var blur:BlurFilter = new BlurFilter(45, 5, 1);
filters = [blur];
}
public function Arc(_thickness:Number)
{
super();
blendMode = BlendMode.ADD;
m_thickness = _thickness;
}
}