Beautifl - Flash Gallery

Preview

ゆらゆらリボン
Nyarineko 2010年3月12日 MIT License
?
      package 
{
    import flash.events.*;
    import org.papervision3d.view.BasicView;
    import org.papervision3d.view.*;
    import org.papervision3d.objects.*;
    import org.papervision3d.core.geom.renderables.Vertex3D;
    
    [SWF(width = "465", height = "465", backgroundColor = "0x000000")]
    public class Mesh extends BasicView
    {
        public var _list:Array;
        public var _num:uint = 0;
        public var _lng:uint = 60;
        
        function Mesh():void
        {
            super(0, 0, true, true);
            stage.frameRate = 60;
            
            _list = [];
            for(var i:Number = 0; i < _lng; i++){
                _list[i] = new Particle(new Vertex3D( 0,0,0 ),new Vertex3D( 0,0,0 ),new Vertex3D( 0,0,0 ));
                scene.addChild(_list[i].mesh);
            }
            stage.addEventListener(MouseEvent.MOUSE_MOVE, _move);
            startRendering();
        }
        
        private function _move(e:MouseEvent = null):void
        {
            var _numR:uint = _num - 1;
            if(_num == 0) _numR = _lng - 1;
            scene.removeChild(_list[_num].mesh);
            var v: Vertex3D = new Vertex3D( (mouseX - stage.stageWidth / 2) * 2,(-mouseY + stage.stageHeight / 2) * 2,-100 -Math.random()*200 );
            _list[_num] = new Particle(_list[_numR].v1,_list[_numR].v2,v);
            scene.addChild(_list[_num].mesh);
            _num++;
            if(_num == _lng) _num = 0;
        }
        
        override protected function onRenderTick(event:Event=null):void
        {
            renderer.renderScene(scene, camera, viewport);
        }
    }
    
}

import org.papervision3d.lights.PointLight3D;
import org.papervision3d.view.*;
import org.papervision3d.materials.*;
import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
import org.papervision3d.core.geom.*;
import org.papervision3d.objects.*;
import org.papervision3d.core.geom.renderables.Vertex3D;
import org.papervision3d.core.math.NumberUV;
import org.papervision3d.core.geom.renderables.Triangle3D;
import org.libspark.betweenas3.BetweenAS3;
import org.libspark.betweenas3.easing.*;
import org.libspark.betweenas3.tweens.ITween;

class Particle
{
    public var x:Number;
    public var _v0: Vertex3D;
    public var _v1: Vertex3D;
    public var _v2: Vertex3D;
    public var mesh:TriangleMesh3D;
    public var _next: Vertex3D;
    
    public function Particle(v0:Vertex3D,v1:Vertex3D,v2:Vertex3D):void
    {
        _v0 = v0;
        _v1 = v1;
        _v2 = v2;
        
        var light:PointLight3D = new PointLight3D();
        var matFSM:FlatShadeMaterial = new FlatShadeMaterial(light, 0x222222, 0xff3366);
        matFSM.doubleSided = true;
        mesh = new TriangleMesh3D( matFSM , new Array(), new Array(), null );
        mesh.geometry.vertices = [ v0 , v1 , v2 ];
        mesh.geometry.faces.push( new Triangle3D( mesh, new Array(v0,v1,v2), null, new Array(new NumberUV( 0, 0 ),new NumberUV( 1, 0 ),new NumberUV( 0, 1 )) ));
        mesh.geometry.ready = true;
        for each(var obj:* in mesh.geometry.vertices){
            BetweenAS3.parallel(
            BetweenAS3.tween(obj,{x:obj.x+(Math.random()*100 - 50)},null,5,Sine.easeIn),
            BetweenAS3.tween(obj,{y:obj.y+(Math.random()*100 - 50)},null,5,Sine.easeIn),
            BetweenAS3.tween(obj,{z:obj.z+(Math.random()*100 - 50)},null,5,Sine.easeIn)).play();
        }
    }
    public function get v0():Vertex3D{
        return _v0;
    }
    public function get v1():Vertex3D{
        return _v1;
    }
    public function get v2():Vertex3D{
        return _v2;
    }
}