In case Flash no longer exists; a copy of this site is included in the Flashpoint archive's "ultimate" collection.

Dead Code Preservation :: Archived AS3 works from wonderfl.net

forked from: forked from: [BetweenAS3] Papervision Matrix3D Tween

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

// forked from yonatan's forked from: [BetweenAS3] Papervision Matrix3D Tween
// forked from yonatan's [BetweenAS3] Papervision Matrix3D Tween
// forked from nitoyon's [BetweenAS3] Random Text Tween
package {
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.utils.*;
    import org.libspark.betweenas3.easing.*;
    import org.papervision3d.lights.PointLight3D;
    import org.papervision3d.materials.shadematerials.FlatShadeMaterial;
    import org.papervision3d.objects.DisplayObject3D;
    import org.papervision3d.objects.primitives.PaperPlane;
    import org.papervision3d.view.BasicView;

    [SWF (backgroundColor="0xFFFFFF")]

    public class FlashTest extends BasicView {
        public function FlashTest() {
            _camera.zoom = 30;

            var light:PointLight3D;
            light = new PointLight3D(false);
            light.y = 1000;

            var mats:Array = [];
            mats.push(new FlatShadeMaterial(light, 0x0c6867));
            mats.push(new FlatShadeMaterial(light, 0x6677FF));
            mats.push(new FlatShadeMaterial(light, 0x222222));
            mats.push(new FlatShadeMaterial(light, 0xe88b12));
            mats.forEach( function(item:*, ...rest):void {item.doubleSided = true;} );

            var planes:Array = [];
            for(var i:uint=0; i < 64; i++) {
                var p:PaperPlane = new PaperPlane(mats[i%mats.length]);
                scene.addChild(p);
                planes.push(p);
            }

            function doTweens():void {
                var sx:Number = Math.random()*3;
                var sy:Number = Math.random()*3;
                var sz:Number = Math.random()*2;
                var yaw:Number = Math.random()*1000;
                var pitch:Number = Math.random()*1200;
                var dist:Number = Math.random()*500 + 250;
                var lookAt0:Boolean = Math.random() < 0.5;

                for(var i:uint=0; i < planes.length; i++) {
                    var n:Number = i/planes.length - 0.5;

                    var dst:DisplayObject3D = new DisplayObject3D;
                    dst.yaw(yaw*n);
                    dst.pitch(pitch*n);
                    dst.moveForward(dist);
                    dst.scaleX = sx;
                    dst.scaleY = sy;
                    dst.scaleZ = sz;
                    if(lookAt0) {
                        dst.lookAt(DisplayObject3D.ZERO);
                    }
                    dst.copyTransform(dst);

                    var tween:PVMatrixTween = new PVMatrixTween();
                    tween.target = planes[i];
                    tween.easing = Sine.easeOut;
                    tween.matrix = dst.transform;
                    tween.time = 1;
                    tween.play();
                }
            }

            setInterval(doTweens, 1500);
            addEventListener("enterFrame", function(e:*):void {
                    _camera.x = light.x = Math.sin(getTimer()/3000) * 1000;
                    _camera.z = light.z = Math.cos(getTimer()/3000) * 1000;
                });

            startRendering();
        }
    }
}