zoukankan      html  css  js  c++  java
  • 酷毙的发光颗粒(Particle Light)

    一个超酷的发光颗粒效果

     效果展示

    /**
     * Copyright sh.parastandeh ( 
    http://wonderfl.net/user/sh.parastandeh )
     * MIT License ( 
    http://www.opensource.org/licenses/mit-license.php )
     * Downloaded from: 
    http://wonderfl.net/c/1iWk
     
    */

    // forked from sh.parastandeh's forked from: Particle Light(StarDust)
    // forked from mousepancyo's Particle Light(StarDust)
    // forked from otherone's StarDustテスト
    package {
        
    import flash.display.*;
        
    import flash.events.Event;
        
    import flash.filters.GlowFilter;
        
    import flash.geom.Rectangle;
        
    import flash.geom.ColorTransform;
        
    import flash.geom.Point;
        
    import flash.filters.BlurFilter;
        
    import net.hires.debug.Stats;
        
    import idv.cjcat.stardust.common.clocks.SteadyClock;
        
    import idv.cjcat.stardust.common.emitters.Emitter;
        
    import idv.cjcat.stardust.common.renderers.Renderer;
        
    import idv.cjcat.stardust.twoD.renderers.BitmapRenderer;
        
    import frocessing.color.ColorHSV;

        [SWF(width 
    = 800,height = 800,frameRate = 60,backgroundColor = 0)]
        
        
    public class Main extends Sprite {
            
    protected var emitter:Emitter;// エミッター
            protected var renderer:Renderer;// レンダラー
            private const stw:uint = stage.stageWidth,sth:uint = stage.stageHeight;
            
    private var _hsv:ColorHSV;
            
    private var _bmd:BitmapData;
            
    private var _blurBmd:BitmapData;
            
    private var _ctf:ColorTransform;
            
            
    public function Main() {
                _hsv 
    = new ColorHSV(0, .8, .95);
                _bmd 
    = new BitmapData(800 ,800false0);
                _ctf 
    = new ColorTransform(.95, .9, .7);
                
    //
                var bm:Bitmap = new Bitmap(_bmd);
                var bbm:Bitmap 
    = new Bitmap(_blurBmd = _bmd.clone());
                bbm.blendMode 
    = "add"
                addChild(bm)
                addChild(bbm)
                addChild(
    new Stats());
                
    //
                
    // パーティクルシステムの構築
                
    //
                
    // [1]clockを作成 [2]エミッターを作成
                emitter = new MyEmitter(new SteadyClock(6)); // エミッターに1フレームに発生させたい数値を指定
                
    // [3]レンダラーを作成 (MCを指定)
                renderer = new BitmapRenderer(_bmd);
                
    // [4]レンダラーにエミッターを追加
                renderer.addEmitter(emitter);
                
    //
                addEventListener(Event.ENTER_FRAME, loop);
            }
                
            
    private function loop(e:Event):void {
                _ctf.redMultiplier 
    = (_hsv.value >> 16 & 0xff/ 255;
                _ctf.greenMultiplier 
    = (_hsv.value >> 8 & 0xff/ 255;
                _ctf.blueMultiplier 
    = (_hsv.value & 0xff/ 255
                
    //
                _bmd.colorTransform(_bmd.rect, _ctf)
                _bmd.applyFilter(_bmd, _bmd.rect, 
    new Point(), new BlurFilter(883))
                _blurBmd.copyPixels(_bmd, _bmd.rect, 
    new Point())
                
    //
                MyEmitter(emitter).point.x += (mouseX - MyEmitter(emitter).point.x) * .1;
                MyEmitter(emitter).point.y 
    += (mouseY - MyEmitter(emitter).point.y) * .1;
                
    //
                _hsv.h++;
                emitter.step();
            }

        }
    }

    //エミッター
    import idv.cjcat.stardust.common.actions.*;
    import idv.cjcat.stardust.common.clocks.*;
    import idv.cjcat.stardust.common.initializers.*;
    import idv.cjcat.stardust.common.math.*;
    import idv.cjcat.stardust.twoD.actions.*;
    import idv.cjcat.stardust.twoD.emitters.*;
    import idv.cjcat.stardust.twoD.initializers.*;
    import idv.cjcat.stardust.twoD.zones.*;
    import idv.cjcat.stardust.twoD.renderers.*;
    import idv.cjcat.stardust.twoD.fields.BitmapField;
    import idv.cjcat.stardust.twoD.fields.UniformField;

    class MyEmitter extends Emitter2D {
        
    public var point:SinglePoint = new SinglePoint(); // パーティクルの発生位置
        
        
    public function MyEmitter(clock:Clock = null) {
            
    //-- パーティクルシステムの構築
            super(clock);
            
    // [5]イニシャライザーを登録;
            
    // パーティクルのアイテムを指定
            addInitializer(new DisplayObjectClass(MyCircle));
            
    // パーティクルにかかる力を指定;
            addInitializer(new Velocity(new LazySectorZone(0.10)));
            
    // パーティクルのライフ(生存)を指定;
            addInitializer(new Life(new UniformRandom(4020)));
            addInitializer(
    new Position(point));        

            
    // [6]アクションを登録
            addAction(new AlphaCurve(20,40));
            
            addAction(
    new Age());
            
    // 寿命を有効化;
            addAction(new DeathLife());
            
    // 消えるを有効化;
            addAction(new Accelerate(0.05));
            
    // 加速を有効化;
            addAction(new Move());
            
    // 移動を有効化;
            
            var bmpField:BitmapField 
    = new BitmapField();
            bmpField.max 
    = 0.1;
            bmpField.massless 
    = false;
            bmpField.scaleX 
    = bmpField.scaleY = 0;
            
            
    // 重力;
            var gravity:Gravity = new Gravity();
            gravity.addField(bmpField);
            gravity.addField(
    new UniformField( 00.01)); // x , y
            addAction(gravity);
        }
    }

    import flash.display.Shape;
    class MyCircle extends Shape {
        
    public function MyCircle() {
            graphics.beginFill (
    0xFFFFFF,1.0);
            graphics.drawCircle(
    00, Math.random()*5 | 0);
            graphics.endFill()
        }

    } 

  • 相关阅读:
    元祖操作
    列表操作
    字符串操作
    zabbix监控脚本
    nginx 使用php-fpm的配置php环境参数
    网卡切换脚本
    mysql数据备份脚本
    docker概念
    网络链路质量监控smokeping
    搭建speedtest
  • 原文地址:https://www.cnblogs.com/as3developer/p/2035230.html
Copyright © 2011-2022 走看看