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

PerlinDisplacement[P1]

PerlinDisplacement[P1]
- Interactive Background, step 1
/**
 * Copyright bradsedito ( http://wonderfl.net/user/bradsedito )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/l0yf
 */

// forked from okoi's DisplacementMapFilterのテスト
//
//    perlinNoiseを利用したDisplacementMapFilterテスト
//    @author okoi
//
package 
{
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.BitmapDataChannel;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.geom.Matrix;
    import flash.geom.Point;
    import flash.filters.DisplacementMapFilter;
    import flash.filters.DisplacementMapFilterMode;
    import flash.text.TextField;
    
    [SWF(backgroundColor=0xFFFFFF)]
    
  
    
    public class Main extends Sprite 
    {
        private var _perlin:BitmapData;
        private var _perlinOffset:Array;
        
        private var _canvas:BitmapData;
        
        private var _text:TextField;
        private var _textPos:Array = new Array();
        private static const TEXTNUM:int = 0;
        
        
        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);
        }
        
        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            // entry point
            
            //    比較対象の背景としてPerlinNoise用のBitmapDataを作成
            _perlin = new BitmapData( stage.stageWidth, stage.stageHeight, true, 0x0 );
            _perlinOffset = [new Point()];

            //    DisplacementMapFilterをかけるオブジェクトを描くBitmapData
            _canvas = _perlin.clone();
                
            addChild( new Bitmap( _canvas ) );
            addChild( new Bitmap( _perlin )    );
        
            _text = new TextField();
            _text.text = "BradSedito";
            _text.textColor = 0x000000;
            for ( var i:int = 0; i < TEXTNUM; i++ )
            {
                _textPos.push( new Point( Math.random() * stage.stageWidth, Math.random() * stage.stageHeight ) );
            }    
            addEventListener( Event.ENTER_FRAME, Update );
            
        }
        
        private    function Update(e:Event):void 
        {
            _perlinOffset[0].x = (_perlinOffset[0].x + 1);
            _perlin.perlinNoise( 100, 100, 2, 2, true, true, BitmapDataChannel.ALPHA, true ,_perlinOffset );
 
/*           
            _perlin.perlinNoise(
                64,                            //    x 方向で使用する周波数(幅)
                64,                            //     y 方向で使用する周波数(高さ)
                1,                            //    重ねる回数 やりすぎると重い
                256,                        //    適当な整数
                true,                        //    補 
                true,                        //    フラクタルノイズの有無。falseの場合、炎や海の波のような視覚効果
                BitmapDataChannel.ALPHA,    // (8 | 4 | 2 | 1),    //    ノイズ生成のチャンネル
                true,                        //    グレースケール化
                _perlinOffset                //    第03引数で決めた各レイヤーをスクロールするためのPoint型の配列データ
                );
  */             
                
            //    テキストを_canvasに書き込む
            _canvas.fillRect( _canvas.rect, 0xFFFFFF );
            for ( var i:int = 0; i < TEXTNUM; i++ )
            {
                _canvas.draw( _text, new Matrix(1, 0, 0, 1, _textPos[i].x, _textPos[i].y) ); 
            }
     /*       _canvas.applyFilter( _canvas, _canvas.rect, new Point(), 
                new DisplacementMapFilter(
                    _perlin,
                    new Point(),
                    BitmapDataChannel.ALPHA, // X方向置き換えに使うchannel
                    BitmapDataChannel.ALPHA, // Y方向置き換えに使うchannel
                    40,
                    40,
                    DisplacementMapFilterMode.CLAMP,
                    0, 
                    0
                )
            );
      
      */      
            
        }
        
    }
    
}