forked from: 雲(静止画)
雲(静止画)の生成
クリックしたら模様が変わる!!!
2009.12.24
/**
* Copyright Dorara ( http://wonderfl.net/user/Dorara )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/7EsJ
*/
// forked from Dorara's 雲(静止画)
// 雲(静止画)の生成
// クリックしたら模様が変わる!!!
// 2009.12.24
package {
import flash.events.Event;
import flash.geom.Rectangle;
import flash.sampler.DeleteObjectSample;
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.MouseEvent;
[SWF(width="465", height="465",backgroundColor=0x00000000)]
public class Clouds extends Sprite
{
private var _bitmap:BitmapData;
private var _grad:BitmapData;
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();
//マウスイベント
stage.addEventListener(MouseEvent.CLICK, function(e:Event):void{
createClouds();
});
}
//雲の生成
public function createClouds():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);
//雲の生成
_bitmap.perlinNoise(100, 100, 11, Math.round(Math.random()*1000)+1, false, true, 4, true);
_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);
}
}
}