flash on 2009-9-21

by hacker_9p8x8mco
♥0 | Line 79 | Modified 2009-09-21 12:31:22 | MIT License
play

ActionScript3 source code

/**
 * Copyright hacker_9p8x8mco ( http://wonderfl.net/user/hacker_9p8x8mco )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/iV5q
 */

<?xml version="1.0" encoding="utf-8"?>
<!-- forked from fff's MXML:chrysanthemum -->
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute"
	xmlns="*">

	<mx:ApplicationControlBar dock="true">
		<mx:HSlider id="hs" value="1000" minimum="60" maximum="3600" snapInterval="1"
			width="100%" change="mc.n=hs.value;mc.init();"/>
		<mx:ColorPicker id="cp" selectedColor="0xffff00"
			change="mc.c=cp.selectedColor;mc.init();" />
	</mx:ApplicationControlBar>

	<mx:Canvas width="100%" height="100%"
		backgroundColor="#000000"
		backgroundAlpha=".7">
		<MyComp id="mc" width="100%" height="100%" />
	</mx:Canvas>	

	<mx:Component className="MyComp">
		<mx:UIComponent creationComplete="init()">
			<mx:Script>
				<![CDATA[
		import flash.display.*;
		import flash.filters.GlowFilter;
		import flash.geom.Point;

		public var n:int = 1000;
		public var c:int = 0xffff00;
		
		private var chrysanthemum:Shape;
		private var pt:Point;
		private var v:Array;
		
		public function init():void
		{	
			if (chrysanthemum)
			{
				chrysanthemum.graphics.clear();
			}
			else
			{
				chrysanthemum = new Shape();
				chrysanthemum.x = width/2;
				chrysanthemum.y = height/2;
				addChild(chrysanthemum);
				addEventListener(Event.ENTER_FRAME, enterFrameHandler);
			}
			chrysanthemum.filters = [new GlowFilter(c)];
			v = new Array();
			
			// キクの花
			var u:Number = 0.0;
			var r:Number = 0.0;
			var p4:Number = 0.0;
			var p8:Number = 0.0;
			var pt:Point = new Point();
			for(var i:int=0; i<=n; i++)
			{
				u = i*21.0*Math.PI/n;
				p4 = Math.sin(17*u/3);
				p8 = Math.sin(2*Math.cos(3*u) - 28*u);
				r = 5*(1 + Math.sin(11*u/5)) - 4*Math.pow(p4, 4)*Math.pow(p8, 8);
				pt.x = r*Math.cos(u)*20;
				pt.y = r*Math.sin(u)*20;
				v.push(pt.clone());
			}
			chrysanthemum.graphics.lineStyle(1, 0xffffff, 0.2);
			chrysanthemum.graphics.moveTo(v[0].x, v[0].y);
			
			for (var j:int=1; j<v.length; j++)
				chrysanthemum.graphics.lineTo(v[j].x, v[j].y);
			
			chrysanthemum.graphics.lineStyle(2, 0xffffff);
			chrysanthemum.graphics.moveTo(v[n-1].x, v[n-1].y);
				
		}
		private function enterFrameHandler(e:Event):void
		{
			chrysanthemum.rotation++;
			var pt:Point = v.pop();
			if(pt)
			{
				chrysanthemum.graphics.lineTo(pt.x, pt.y);
			}
		}
				]]>
			</mx:Script>
		</mx:UIComponent>
	</mx:Component>
</mx:Application>