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: flash on 2009-8-20

// forked from f_angel's flash on 2009-8-20
package {
    import de.polygonal.ds.DLinkedList;
    import de.polygonal.ds.DListNode;
 
    import gs.TweenMax;
 
    import org.papervision3d.events.InteractiveScene3DEvent;
    import org.papervision3d.materials.ColorMaterial;
    import org.papervision3d.objects.primitives.Plane;
    import org.papervision3d.view.BasicView;
 
    [SWF(width="900", height="480", backgroundColor="#000000", frameRate="60")]
    public class StackedPlanes extends BasicView
    {
        private static const X_SPACING:Number = 400;
        private static const Z_SPACING:Number = 400;
        private static const NUMBER_OF_PLANES:int = 20;
        private static const TIME:Number = .5;
 
        private var planeList:DLinkedList = new DLinkedList();
 
        public function StackedPlanes()
        {
            viewport.interactive = true;
 
            for(var i:int = 0; i < NUMBER_OF_PLANES; i++)
            {
                var randomColor:Number = Math.random() * 0xffffff;
                var colorMaterial:ColorMaterial = new ColorMaterial(randomColor);
                colorMaterial.interactive = true;
                var plane:Plane = new Plane(colorMaterial, 400, 400, 4, 4);
                plane.x = i * X_SPACING;                
 
                plane.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, plane_objectClickHandler);
 
                planeList.append(plane);
                scene.addChild(plane);
            }
 
            flow(plane);
 
            startRendering();
        }
 
        private function plane_objectClickHandler(event:InteractiveScene3DEvent):void
        {
            var plane:Plane = Plane(event.target);
            flow(plane);            
        }
 
        private function flow(plane:Plane):void
        {
            var xPosition:Number = 0;
            var zPosition:Number = 0;
            TweenMax.to(plane, TIME, {x:xPosition, z:zPosition, rotationY:0});
 
            var current:DListNode = planeList.nodeOf(plane).node;
 
            var walkLeft:DListNode = current.prev;
            while(walkLeft)
            {
                plane = Plane(walkLeft.data);
                xPosition += X_SPACING;
                zPosition += Z_SPACING;
                TweenMax.to(plane, TIME, {x:xPosition, z:zPosition});
                walkLeft = walkLeft.prev;
            }
 
            xPosition = 0;
            zPosition = 0;
            var walkRight:DListNode = current.next;
            while(walkRight)
            {
                plane = Plane(walkRight.data);
                xPosition -= X_SPACING;
                zPosition -= Z_SPACING;
                TweenMax.to(plane, TIME, {x:xPosition, z:zPosition});
                walkRight = walkRight.next;
            }
        }
    }
}