package { import flash.display.BitmapData; import flash.display.Sprite; import flash.events.*; import flash.geom.Point; import flash.geom.Rectangle; import flash.media.Video; import flash.net.NetConnection; import flash.net.NetStream; import org.papervision3d.cameras.Camera3D; import org.papervision3d.materials.BitmapMaterial; import org.papervision3d.materials.ColorMaterial; import org.papervision3d.materials.MaterialsList; import org.papervision3d.objects.Cube; import org.papervision3d.objects.DisplayObject3D; import org.papervision3d.scenes.*; [SWF(width="800", height="600", frameRate="31", backgroundColor="#292929")] public class PV3D extends Sprite { private var _container : Sprite; private var _scene3D : Scene3D; private var _camera : Camera3D; private var _rootNode : DisplayObject3D; private var _connection : NetConnection; private var _stream : NetStream; private var _video : Video; private var _videoSprite : Sprite; private var _videoWidth : Number; private var _videoHeight : Number; private var _videoTexture : BitmapData; private var _basePoint : Point; private var _basePoint2 : Point; private var size :Number = 10; private var quality :Number = 6; private var rectArr:Array = new Array(); private var planeTextureArr:Array = new Array(); private var materialArr:Array = new Array(); private var cubeMaterialArr:Array = new Array(); static public var MAXX:Number = 16; static public var MAXY:Number = 12; static public var SIZE:Number = 90; static public var SIZE2:Number = 100; private var rootNode :DisplayObject3D; public function PV3D () { stage.quality = "MEDIUM"; stage.scaleMode = "noScale"; init3D(); loadVideo(); createArrays(); createCubes(); this.addEventListener( Event.ENTER_FRAME, loop3D ); addEventListener(MouseEvent.MOUSE_DOWN, mouseDownHandler); } public function mouseDownHandler(event:MouseEvent):void { // on click, randomize their speeds for(var x:Number=0; x position if(box.extra.y <= -50.0) { // bounce box.extra.y = -50.0; box.extra.vy = (box.extra.vy) * -0.9; } box.extra.vy-=5.0; // gravity -> speed box.y = box.extra.y; switch((x+y)%3) { case 0: box.rotationX = (box.y+50)/8; break; case 1: box.rotationY = (box.y+50)/8; break; case 2: box.rotationZ = (box.y+50)/8; break; } } } _scene3D.renderCamera(_camera ); } } }