flash on 2012-11-27

by xarple
...
@author
♥0 | Line 105 | Modified 2012-11-27 21:19:46 | MIT License
play

ActionScript3 source code

/**
 * Copyright xarple ( http://wonderfl.net/user/xarple )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/19l4
 */

package 
{
    import flash.filters.GlowFilter;
    import flash.display.AVM1Movie;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.display.Bitmap;
    import flash.display.BitmapData;
    import flash.display.BitmapDataChannel;
    import flash.geom.Matrix;
    import flash.geom.Point;
    import flash.filters.DisplacementMapFilter;
    import flash.filters.DisplacementMapFilterMode;
    import flash.filters.BlurFilter;
    
    import flash.geom.ColorTransform;
    
    [SWF(width = "465", height = "465", frameRate = "30")]
    
    
    /**
     * ...
     * @author 
     */
    public class Main extends Sprite 
    {        
        public static const WIDTH:int = 100;
        public static const HEIGHT:int = 100;
        
        private var label:Label;
        private var labelMat:Matrix;

        private var canvas:BitmapData;
        private var shadow:BitmapData;
        private var perlin:BitmapData;
        private var filter:DisplacementMapFilter;
        
        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
            this.cacheAsBitmap = true;
            
            var spr:Sprite = new Sprite();
            
            perlin = new BitmapData(WIDTH, HEIGHT, true, 0);
            
            //    テキストの影
           // shadow = new BitmapData(WIDTH, HEIGHT, true, 0);
           //spr.addChild( new Bitmap(shadow) );


            label = new Label("wonderfl");
            labelMat = new Matrix(1, 0, 0, 1, WIDTH / 2 - label.width / 2, HEIGHT / 2 - label.height / 2);
            canvas = new BitmapData(WIDTH, HEIGHT, true, 0);
            spr.addChild( new Bitmap(canvas) );
            
            spr.filters = [new GlowFilter(0, 0.5, 10, 10, 2, 3)];
            addChild(spr);
            
            filter =                new DisplacementMapFilter(
                    perlin,
                    new Point(),
                    BitmapDataChannel.ALPHA,
                    BitmapDataChannel.RED,
                    0,
                    0,
                    DisplacementMapFilterMode.CLAMP,
                    0,
                    0
                );
            
            addEventListener( Event.ENTER_FRAME, EnterFrameHandler );
        }
        
        private function EnterFrameHandler( e:Event ) : void
        {
            perlin.perlinNoise(
                20,
                20,
                1,
                Math.random() * 100,
                true,
                false,
                BitmapDataChannel.ALPHA | BitmapDataChannel.RED,
                false,
                [0]
            );            
            
            canvas.fillRect(canvas.rect, 0 );
            labelMat.tx = WIDTH / 2 - label.width / 2 + (Math.random() * 4 - 2);
            labelMat.ty = HEIGHT / 2 - label.height / 2 + (Math.random() * 4 - 2);
            canvas.draw( label, labelMat );
            
            
            var scale:Number = 5;
            if ( int(Math.random() * 30) == 0 )    scale = 40;
            
            filter.scaleX = scale;
            filter.scaleY = scale;
            canvas.applyFilter(
                canvas,
                canvas.rect,
                new Point(),
                filter
            );

            
            
        }
        
    }
    
}

import flash.text.TextField;
import flash.text.TextFormat;
import flash.display.Sprite;

class Label extends Sprite {
    
    private var text:TextField;
    
    public function Label( t:String ) {
        
        var tf:TextFormat = new TextFormat();
        tf.font = "_ゴシック";
        tf.size = 80;
        tf.bold = true;
        
        text = new TextField();
        text.defaultTextFormat = tf;
        text.textColor = 0;
        text.selectable = false;
        text.text = t;
        text.autoSize = "left";
        
        addChild( text );
    }
    
}