zoukankan      html  css  js  c++  java
  • 粒子效果2

    import flash.geom.*;
    [SWF(width = 465, height = 465, backgroundColor = 0x0, frameRate = 30)]
     var m:Matrix3D,vm:Matrix3D = new Matrix3D(),p:Object,pp:PerspectiveProjection = new PerspectiveProjection(),pm:Matrix3D=pp.toMatrix3D(),vins:Vector.<Number> = new Vector.<Number>(),vouts:Vector.<Number> = new Vector.<Number>(),uvts:Vector.<Number> = new Vector.<Number>(),v2ds:Vector.<Number> = new Vector.<Number>(),particles:Array = [];
    addEventListener("enterFrame", function():void{
    if (Math.random()<0.05) {var c2:int = 400 * Math.random();
    var v2:Vector3D = new Vector3D((Math.random()-0.5)*400,(Math.random()-0.5)*400,(Math.random()-0.5)*400,Math.random()*0xffffff);
    while (c2-- > 0){(m = new Matrix3D(Vector.<Number>([1,0,0,0,0,1,0,0,0,0,1,0,0, 0, (Math.random()*.2+0.8) * 5,1]))).appendRotation(360 * Math.random(), Vector3D.X_AXIS);
            m.appendRotation(360 * Math.random(), Vector3D.Y_AXIS);
            var v:Vector3D = m.transformVector(new Vector3D);
            particles.push({tails:[],energy:Math.random() * 5,v:v,position:v2,color:v2.w,deceleration:.95,gravity:.05,length:2});}}
    (vm=new Matrix3D(Vector.<Number>([1,0,0,0,0,1,0,0,0,0,1,0,0, 200, -550,1]))).appendRotation(mouseX/10, Vector3D.Y_AXIS,vm.position);
    vm.appendRotation(-mouseY/10, Vector3D.X_AXIS,vm.position);
    vm.invert();
    graphics.clear();
    for (var i:int = particles.length - 1; i >= 0; i--){(p = particles[i]).v.scaleBy(p.deceleration);
            p.v.y += p.gravity;
            p.position= p.position.add(p.v);
            p.energy *= p.deceleration;
            if (p.energy < 0.05) { particles.splice(i, 1);
            } else {p.v2d = Utils3D.projectVector(pm, (p.vposition = vm.transformVector(p.position)));
                    graphics.lineStyle(400 / p.v2d.w, p.color);
                    graphics.moveTo(p.v2d.x, p.v2d.y);
                    for (var j:int = p.tails.length - 1,c:int=0,tc:int=4; j >= 0; j--,c++) {
                            if (c>p.energy*tc) {p.tails.splice(j, 1); continue;}
                            var v2d:Vector3D = Utils3D.projectVector(pm, vm.transformVector(p.tails[j]));
                            graphics.lineStyle(500 / p.v2d.w, p.color,(p.energy*tc-c)/p.energy*tc);
                            graphics.lineTo(v2d.x, v2d.y);}
                    if (p.tails[0]) {if (Math.sqrt((p.tails[p.tails.length - 1].x-p.position.x)*(p.tails[p.tails.length - 1].x-p.position.x)+(p.tails[p.tails.length - 1].y-p.position.y)*(p.tails[p.tails.length - 1].y-p.position.y)+(p.tails[p.tails.length - 1].z-p.position.z)*(p.tails[p.tails.length - 1].z-p.position.z))>p.length) {p.tails.push(p.position.clone());}}else {p.tails.push(p.position.clone());}}}});
    x =y = 228;

  • 相关阅读:
    三元运算符嵌套问题
    tp框架利用redis存储session
    PHP date('W')遇到跨年问题
    AES加解密 集成 spring MVC
    python SMTP 发送邮件
    mysql数据库安装过程
    (转)Apache启动过程
    apache服务器全局配置详解
    Apache 的 httpd.conf 详解(很实用)
    安装apache遇到的问题总结
  • 原文地址:https://www.cnblogs.com/flashweb/p/2797280.html
Copyright © 2011-2022 走看看