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

OrangeBamboo

マウスクリックするたび、竹が生えます。100回くらいクリックすると綺麗な絵になる
気がします。大変です。マウスホイールでリセットですが、マウスホイールがない
と大変です。困ってしまいます。
Get Adobe Flash player
by sat 17 Feb 2010
    Embed
// forked from sat's OrangeBumboo
/*
マウスクリックするたび、竹が生えます。100回くらいクリックすると綺麗な絵になる
気がします。大変です。マウスホイールでリセットですが、マウスホイールがない
と大変です。困ってしまいます。
*/
package
{
	import flash.display.Sprite;
	import flash.display.Graphics;
	import flash.events.MouseEvent;
	import flash.geom.Point;
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.geom.ColorTransform;
	import flash.geom.Matrix;
	
	[SWF(width=465, height=465, frameRate=24, backgroundColor=0xff6633)]
	
	public class Orange extends Sprite
	{
		
		public var bambSpace:uint = 6;
		public var bambNum:uint;
		public var bambBmp:BitmapData;
		public var ct:ColorTransform;
		public var mt:Matrix;
		
		
		
		public function Orange()
		{
			init();
			
		}
		
		public function reset(e:MouseEvent):void
		{
			graphics.clear();
			bambBmp.dispose();
			init();
		}
		
		public function genBumb(e:MouseEvent):void
		{
			bambNum++;
			trace(bambNum);
			
			var mX:int = mouseX;
			var mY:int = 465;
			var gX:int = mouseX;
			var gY:int = 0;
			
			for(var i:int = 0; i < 20; i++)
			{
				var bambLength:uint = 30;
				var yokoY:int =0;
				
				bambLength += Math.random() * 14;
				mY -= bambSpace;
				gY = mY - bambLength;
				
				gX = (mX - 10) + Math.random() * 20;
				//trace(mY,gY);
				
				//縦線の描画
				for(var j:int = 0; j < 5; j++)
				{
					var bAlpha:Number = Math.random() + 0.5;
					
					graphics.lineStyle(4,0,bAlpha);
					graphics.moveTo(mX + j * 3, mY);
					graphics.lineTo(gX + j * 3, gY);
					
				}
				
				//横線の描画
				yokoY = mY + bambSpace * 0.5;
				graphics.lineStyle(1,0);
				graphics.moveTo(mX, yokoY);
				graphics.lineTo(mX + 15, yokoY);
				
				
				//葉っぱの描写
				
				
				if(Math.random() < 0.4)
				{
					//左右のどっちに生えるか
					var sayuu:uint = Math.floor( Math.random() * 2);
				
					
					if(sayuu == 0)
					{
						var gP:Point = new Point(gX - 30, gY -30);
						graphics.lineStyle(1,0);
						graphics.moveTo(gX, gY);
						graphics.curveTo( gX, gY -20 , gP.x, gP.y);
						graphics.moveTo(gX, gY);
						graphics.curveTo( gX - 10, gY -30 , gP.x, gP.y);
					}
					
					if(sayuu == 1)
					{
						var gP2:Point = new Point(gX + 30 + 15, gY -30);
						graphics.lineStyle(1,0);
						graphics.moveTo(gX + 15, gY);
						graphics.curveTo( gX + 15, gY -20 , gP2.x, gP2.y);
						graphics.moveTo(gX + 15, gY);
						graphics.curveTo( gX + 10 + 15, gY -30 , gP2.x, gP2.y);
					}
				}
				
				//mYの位置を更新
				mY = gY;
				mX = gX;
				
			}
			if(bambNum == 5)
				{
					bambNum = 0;
					changeBumb();
				}
				

		}
		
		
		public function changeBumb():void
		{
			//mt.scale(0.2,0.2);
			ct.alphaMultiplier = Math.random();
			ct.redOffset = 64;
			ct.greenOffset = 9;
			
			bambBmp.draw(stage,mt,ct);
			addChild( new Bitmap(bambBmp) );
			graphics.clear();
			
		}
		
		public function init():void
		{
			bambNum = 0;
			bambBmp = new BitmapData(465,465,true,0xffffff);
			ct = new ColorTransform();
			mt = new Matrix();
			
			stage.addEventListener(MouseEvent.MOUSE_DOWN, genBumb);
			
			stage.addEventListener(MouseEvent.MOUSE_WHEEL, reset);
		}
		
				
	}
}