In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

RoseBlossom

バラ曲線のリスト
    r = sin(θ * n/d)
このリストは横軸がn(1~8) 縦軸がd(1~8)
Get Adobe Flash player
by miyaoka 12 Jun 2009
/**
 * Copyright miyaoka ( http://wonderfl.net/user/miyaoka )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/qZUl
 */

// forked from 178ep3's バラ曲線リスト
//
//      バラ曲線のリスト
//    r = sin(θ * n/d)
//      このリストは横軸がn(1~8) 縦軸がd(1~8)

package 
{
	import flash.display.Sprite;
	import caurina.transitions.Tweener;
	import flash.events.MouseEvent;
	
[SWF(width=465, height=465, frameRate=30, backgroundColor=0xffffff)]	
	public class RoseBlossom extends Sprite
	{
		public function RoseBlossom()
		{
			//wonderfl
			graphics.beginFill(0);
			graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
			Wonderfl.capture_delay(5);
	
			//evt
			stage.addEventListener(MouseEvent.MOUSE_DOWN, function ():void 
			{
				var rt:RoseTween = new RoseTween();
				rt.x = mouseX;
				rt.y = mouseY;
				addChild(rt);
				rt.addEventListener(RoseTween.COMPLETE, function ():void 
				{
					removeChild(rt);
					rt = null;
				});
			});
			
		}
	}
}
import flash.display.Shape;
import flash.display.Sprite;
import caurina.transitions.Tweener;
import flash.events.Event;
import flash.display.BlendMode;
import flash.filters.BlurFilter;
import flash.geom.Point;
class RoseTween
extends Sprite
{
	public var d:int = 1;
	public var n:int = 1;
	public var scale:Number = 1.0;
	public static const COMPLETE:String = "CompleteRose";
	private static const TRANS:Array = [
		"easeOutElastic",
		"easeOutBack",
		"easeInOutCirc"
	];
	public function RoseTween():void 
	{
		blendMode = BlendMode.ADD;
		rotation = Math.random() * 360;
		Tweener.addTween(this, {
			d: d + Math.random() * 5 + 1,
			n: n + Math.random() * 20 + 1,
			scale: scale * (Math.random() * 100 + 30),
			rotation: rotation + Math.random() * 720 - 360,
			time: 1.0 + Math.random() * 3.0,
			transition: TRANS[Math.floor(Math.random() * TRANS.length)],
			onUpdate: function ():void 
			{
				var pt:Point = Point.polar(5, (90 - rotation) * Math.PI / 180);
				x += pt.x;
				y += pt.y;
				while (numChildren > 3) removeChildAt(0);
				if (numChildren > 1) Shape(getChildAt(1)).filters = [new BlurFilter(scale, scale)];
				addChild(new Rose(1 * scale, (n == d) ? ++n : n, d));
			},
			onComplete: function() :void
			{
				dispatchEvent(new Event(COMPLETE));
			}
		});
	}
}

class Rose extends Shape
{
	public function Rose(radius:Number,n:uint,d:uint)
	{
		var c:Number = n/d;
		
		this.graphics.lineStyle(Math.random()*2, 
			(Math.random() * 0x66 | 0x99) << 16 |
			(Math.random() * 0x66 | 0x99) << 8 |
			(Math.random() * 0x66 | 0x99)
		);
		this.graphics.moveTo(0,0);
			
		for(var i:uint=0; i<360*d; i+=2)
		{
			var rad:Number = i * Math.PI /180;
			var v:Number = Math.sin(c * rad);
			var r:Number = radius * v;
				
			var x:Number = r * Math.cos(rad);
			var y:Number = r * Math.sin(rad);
				
			this.graphics.lineTo(x,y);
		}
		this.graphics.endFill();
	}
}