• [ActionScript 3.0] AS3.0 火焰效果


    package
    {
        import flash.display.Sprite;
        import flash.display.*
        import flash.events.Event;
        import flash.filters.DisplacementMapFilter;
        import flash.geom.*
        /**
         * @author:Frost.Yen
         * @E-mail:871979853@qq.com
         * @create:    2016-6-28 下午3:37:51
         *
         */
        [SWF(width="1024",height="768")]
        public class FireEffect extends Sprite
        {
            private var bmd:BitmapData;
            private var target:Sprite = createSharp(400, 30,0);
            private var speed:Number = Math.random() * 4 + 4;
            private var strengh:Number = Math.random() * 60 + 60;
            private var size:Number = Math.random() * 17 + 20;
            private var randomseed:Number = Math.floor(Math.random() * 10);
            private var offset:Point = new Point();
            private var v:Point;
            private var w:Number = 50;
            public function FireEffect()
            {
                addChild(target);
                addTo(target);
                target.x = 0;
                target.y = 200;
            }
            private function createSharp(Number,height:Number,angle:Number):Sprite {
                var s:Sprite = new Sprite();
                s.graphics.beginFill(0, 0);
                s.graphics.drawRect( -w, -w, width + 2 * w,  w);
                s.graphics.beginFill(0xffffff);
                s.graphics.drawRect( -w, height, width + 2 * w,  w);
                var fillType:String = GradientType.LINEAR;
                var colors:Array = [0x900000, 0x900000,0xff9900,0xfffd8a,0xffffff];
                var alphas:Array = [0,1,1,1, 1];
                var ratios:Array = [0x00,0xff/16,0xff*2/6,0xff*2/3, 0xFF];
                var matr:Matrix = new Matrix();
                matr.createGradientBox(width, height, Math.PI / 2);
                var spreadMethod:String = SpreadMethod.PAD;
                s.graphics.beginGradientFill(fillType, colors, alphas, ratios, matr, spreadMethod);
                s.graphics.drawRect(0, 0, width, height);
                return s;
            }
            public function addTo(target:Object):void {
                bmd = new BitmapData(target.width, target.height);
                v = new Point(Math.random() * (speed / 4) - speed / 8,Math.random() * (speed / 4) + speed / 4 * 3);
                target.addEventListener(Event.ENTER_FRAME, update);
            }
            private function update(e:Event):void {
                target.filters = [new DisplacementMapFilter(bmd, new Point(), BitmapDataChannel.RED,BitmapDataChannel.RED, 10, strengh, "clamp")];
                offset=offset.add(v);
                bmd.perlinNoise(size / 2, size, 3, randomseed, false, true, 1, true, [offset, offset]);
            }
        }
    }
  • 相关阅读:
    最短路+线段交 POJ 1556 好题
    判断线段和直线相交 POJ 3304
    nginx配置pathinfo模式,解决访问404
    使用ORM关联关系,如何自己关联自己
    PHPCMS
    linux安装redis服务,配置PHP扩展
    后台银行卡算法
    静态类和非静态类
    PHP的闭包和匿名函数
    php获取前一天时间段,每个月的第一天到最后一天
  • 原文地址:https://www.cnblogs.com/frost-yen/p/5623718.html
Copyright © 2020-2023  润新知