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

forked from: 煙のアニメーション

borrowed some code from psyark's BumpyPlanet:
http://wonderfl.kayac.com/code/d79cd85845773958620f42cb3e6cb363c2020c73
// forked from Nao_u's 煙のアニメーション
// forked from Nao_u's forked from: Peak beta 1
// forked from shaktool's Peak beta 1
// forked from shaktool's Peak
// borrowed some code from psyark's BumpyPlanet:
// http://wonderfl.kayac.com/code/d79cd85845773958620f42cb3e6cb363c2020c73

package {

	import flash.display.*;
	import flash.events.*;
	import flash.filters.*;
	import flash.geom.*;
	import flash.text.*;
	import flash.utils.*;

	[SWF(width=465, height=465, frameRate=24, backgroundColor=0x808080)]
	public class Peak extends Sprite {

		private var iSw:uint = 465;
		private var iSh:uint = 465;

		private var iCScl:uint = 2;
		private var iCw:uint = iSw/iCScl;
		private var iCh:uint = iSh/iCScl;

		private var dSky:BitmapData;

		private var dStage:BitmapData;
		private var mStage:Bitmap;

		private var dClouds:BitmapData;
		private var mCloudsS:Sprite;
		private var oCloudsSMtx:Matrix;


		private var pNull:Point = new Point(0,0);
		private var oNullMtx:Matrix = new Matrix;
		private var oNullCTrns:ColorTransform = new ColorTransform;

		private var aRemap: Array = new Array(256);
		private var iOct:uint = 4;
		private var aWind:Array = new Array;

		public function Peak() {
			init();
		}
		private function init():void {
			var i:uint;

			iSw = stage.stageWidth;
			iSh = stage.stageHeight;
			iCw = iSw/iCScl;
			iCh = iSh/iCScl;

			for (i=0;i<iOct;i++) aWind.push(new Point);

			dClouds = new BitmapData(iCw,iCh,false,0);

			oCloudsSMtx = new Matrix;
			oCloudsSMtx.createGradientBox(iCw,iCh,.5*Math.PI);
			mCloudsS = new Sprite();
			mCloudsS.graphics.beginFill(0);
			mCloudsS.graphics.beginGradientFill(GradientType.LINEAR,[0xFFFFFF,0],[1,1],[0,0xFF],oCloudsSMtx);
			mCloudsS.graphics.drawRect(0,0,iCw,iCh);

			var mSky:Sprite = new Sprite();
			var mtxSky:Matrix = new Matrix;
			mtxSky.createGradientBox(iSw,iSh,.5*Math.PI);
			mSky.graphics.beginFill(0);
			mSky.graphics.beginGradientFill(GradientType.LINEAR,[0x6AB5FB,0xDCDDDD],[1,1],[0,0xFF],mtxSky);
			mSky.graphics.drawRect(0,0,iSw,iSh);
			dSky = new BitmapData(iSw,iSh,false,0);
			dSky.draw(mSky);

			dStage = new BitmapData(iSw,iSh,false,0);
			mStage = addChild(new Bitmap(dStage )) as Bitmap;

			var c:uint = 0;
			var f:Number = 0;
			var fPrt:Number = .1;
			var fLrg:Number = 2.3;
			var fMlt:Number = 1/(1-fPrt);

			var fMin:Number = 1-f;
			var fMinThr:Number = 1/fMin;
			for(i=0;i<255;i++) {
				c = 0;
				f = i/255;
				var fSmooth:Number = Math.sin(.5*f*Math.PI);
				if (f>fPrt) c = Math.max(0,Math.min(255,Math.ceil(255*fSmooth*fLrg*fMlt*(f-fPrt))));
				aRemap[i] = c<<16|c<<8|c;
 				trace(i,c,aRemap[i].toString(16),Math.sin(.5*f*Math.PI));
			}

			stage.addEventListener(Event.ENTER_FRAME, run);
		}
		private function run(e:Event):void {
			var fMsx:Number = 10*mouseX/iSw/iCScl;
			var fMsy:Number = mouseY/iSh/iCScl;
			for (var i:uint=0;i<aWind.length;i++) {
				var pP:Point = aWind[i];
				var fC:Number = 100*(1/(i+1))*(i%2==0?1:-1);
				pP.x = fC*fMsx;
				pP.y = fC*fMsy;
			}
			dClouds.perlinNoise(300/iCScl,100/iCScl, iOct, 0,false,false, iOct, !true, aWind);
			dClouds.draw(mCloudsS,oNullMtx,oNullCTrns,BlendMode.MULTIPLY);
			dClouds.paletteMap(dClouds, dClouds.rect, pNull, aRemap, aRemap, aRemap, null);

			dStage.copyPixels(dSky,dSky.rect,pNull);
			dStage.draw(dClouds,oNullMtx,oNullCTrns,BlendMode.ADD);

		}
	}
}