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: 雲(静止画)

雲(静止画)の生成
perlinNoiseで雲っぽいの生成できるとは聞いてたけど、
  やってみたらあんまり雲っぽくな、、、かったので、試行錯誤で
それっぽいやつを。背景とかに使いたいわけです。
そろそろAS3の本一冊ぐらい買いたい。。。
2009.12.24
Get Adobe Flash player
by heart_thai 25 Dec 2009
/**
 * Copyright heart_thai ( http://wonderfl.net/user/heart_thai )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/ptY8
 */

// forked from Dorara's 雲(静止画)
// 雲(静止画)の生成
//   perlinNoiseで雲っぽいの生成できるとは聞いてたけど、
//  やってみたらあんまり雲っぽくな、、、かったので、試行錯誤で
//  それっぽいやつを。背景とかに使いたいわけです。
//  そろそろAS3の本一冊ぐらい買いたい。。。
//                 2009.12.24
package {
	import flash.display.Bitmap;
	import flash.display.BitmapData;
	import flash.display.BlendMode;
	import flash.display.Sprite;
	import flash.display.StageAlign;
	import flash.display.StageScaleMode;
	import flash.filters.BlurFilter;
	import flash.geom.ColorTransform;
	import flash.geom.Matrix;
	import flash.geom.Point;
	import flash.events.Event;
	import flash.geom.Point;

	[SWF(width="465", height="465",backgroundColor=0x00000000,frameRate="30")]
	public class Clouds extends Sprite
	{
		private var _bitmap:BitmapData;
		private var _grad:BitmapData;
		
		private  var offsets:Array;
		
		public function Clouds()
		{
			
			this.stage.scaleMode = StageScaleMode.NO_SCALE;
			this.stage.align = StageAlign.TOP_LEFT;
			
			//雲の部分
			_bitmap = new BitmapData(stage.stageWidth, stage.stageHeight);
			//空の部分+雲を重ね合わせる
			_grad = new BitmapData(stage.stageWidth, stage.stageHeight);
			
			//表示
			var image:Bitmap = new Bitmap(_grad);
			addChild(image);
			
			//雲を作る
			//createClouds();
			offsets = new Array(new Point(),new Point());
			this.addEventListener(Event.ENTER_FRAME , createClouds );
		}
		
		//雲の生成
		public function createClouds(e:Event):void
		{
			//空のグラデーション
			var gradation:Sprite = new Sprite();
			var mat:Matrix = new Matrix();
			mat.rotate(Math.PI/2); //グラデーションを上下にする
			gradation.graphics.beginGradientFill("linear", [0x1440d3,0x5a7cef,0xcdd7ff], [1,1,1], [0,127,255], mat);
			gradation.graphics.drawRect(0, 0, stage.stageWidth, stage.stageHeight);
			gradation.graphics.endFill();
			
			_grad.draw(gradation);
			
			
			//雲の生成  
			//Math.round(Math.random()*1000)+1
			offsets[0].x +=  10;
			//offsets[1].x += 1;
			
			_bitmap.perlinNoise(100, 100, 11, 1, false, true, 4, true,offsets);
			_bitmap.threshold(_bitmap, _bitmap.rect, new Point(), "<", 0x008f0000, 0x00000000, 0x00ff0000, true);
			
			///雲の真ん中部分の白を強くしたい(同じやつを重ねてみた)
			_bitmap.draw(_bitmap, new Matrix(), new ColorTransform(), BlendMode.OVERLAY);
			_bitmap.draw(_bitmap, new Matrix(), new ColorTransform(), BlendMode.OVERLAY);
			
			///ブラーかけてごまかす
			_bitmap.applyFilter(_bitmap, _bitmap.rect, new Point(), new BlurFilter());
			
			//空と雲を重ね合わせる
			_grad.draw(_bitmap, new Matrix(), new ColorTransform(), BlendMode.HARDLIGHT);
		}
	}
}