<?xml version="1.0" encoding="utf-8"?> <mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="vertical" creationComplete="init();" viewSourceURL="srcview/index.html"> <mx:Script> <![CDATA[ import org.papervision3d.core.geom.Mesh3D; import mx.core.UIComponent; import org.papervision3d.scenes.*; import org.papervision3d.cameras.*; import org.papervision3d.materials.*; import org.papervision3d.objects.*; private var paperUi:UIComponent = new UIComponent(); private var container:Sprite = new Sprite(); private var scene3d:Scene3D= new Scene3D(container); private var pcamera:Camera3D = new Camera3D(); private var somexid:Number = 0; [Embed(source="assets/bitmap.jpg")] [Bindable] public var imgCls:Class; private var material:BitmapFileMaterial = new BitmapFileMaterial("assets/bitmap.jpg"); private var p:DisplayObject3D; private var rotVx:Number = 0; private var rotVy:Number = 0; private var rotVz:Number = 0; private function init():void { hcanv.removeAllChildren(); scene3d.removeChildByName("pv3dobj"); removeEventListener(Event.ENTER_FRAME, rotX ); removeEventListener(Event.ENTER_FRAME, rotY ); removeEventListener(Event.ENTER_FRAME, rotZ ); hcanv.addChild(paperUi); paperUi.addChild(container); container.x = 200; container.y = 200; pcamera.x = 0; pcamera.y = 0; pcamera.zoom = 11; var cmaterial:ColorMaterial = new ColorMaterial(0xFF0000); cmaterial.oneSide = false; material.doubleSided = true; material.smooth = true; createObj(); } private function createObj():void { material.smooth = true; var size :Number = 180; var quality :Number = 6; var materialist:MaterialsList = new MaterialsList({ front: material, back: material, right: material, left: material, top: material, bottom: material}); switch (String(radGrp.selectedValue)) { case "1": p = new Plane(material, 234, 236, 16, 16); break; case "2": p = new Cube(materialist, size, size, size, quality, quality, quality, Cube.ALL); break; case "3": p = new Sphere(material, 100, 16, 16); break; case "4": p = new Cylinder(material, 100,100,16,16,70); break; case "5": p = new Cone(material, 100, 60, 16, 16); break; case "6": p = new PaperPlane(material, 1); break; case "7": p = new ParticleField(200, 0xFFFFFF, null, 200, 200, 200); break; } scene3d.addChild(p, "pv3dobj"); scene3d.renderCamera(pcamera); checkAxis(null); } private function rotX(e:Event):void { if (rotVx >= 359) { rotVx = 0; } rotVx += 10; scene3d.getChildByName("pv3dobj").rotationX = rotVx; scene3d.renderCamera(pcamera); } private function rotY(e:Event):void { if (rotVy >= 359) { rotVy = 0; } rotVy += 10; scene3d.getChildByName("pv3dobj").rotationY = rotVy; scene3d.renderCamera(pcamera); } private function rotZ(e:Event):void { if (rotVz >= 359) { rotVz = 0; } rotVz += 10; scene3d.getChildByName("pv3dobj").rotationZ = rotVz; scene3d.renderCamera(pcamera); } private function checkAxis(e:Event):void { if (Xaxis.selected == true) { addEventListener(Event.ENTER_FRAME, rotX ); }else { removeEventListener(Event.ENTER_FRAME, rotX ); } if (Yaxis.selected == true) { addEventListener(Event.ENTER_FRAME, rotY ); }else { removeEventListener(Event.ENTER_FRAME, rotY ); } if (Zaxis.selected == true) { addEventListener(Event.ENTER_FRAME, rotZ ); }else { removeEventListener(Event.ENTER_FRAME, rotZ ); } } private function objSelect(e:Event):void { init(); } private function reset():void { Xaxis.selected = false; Yaxis.selected = false; Zaxis.selected = false; init(); } ]]> </mx:Script> <mx:HBox > <mx:VBox borderStyle="solid" backgroundColor="0xCCCCCC" backgroundAlpha="0.5" paddingBottom="10" paddingLeft="10" paddingRight="10" paddingTop="10"> <mx:Label text="Select Object:" fontWeight="bold"/> <mx:RadioButtonGroup id="radGrp" itemClick="objSelect(event);"/> <mx:RadioButton label="Plane" groupName="radGrp" value="1" selected="true"/> <mx:RadioButton label="Cube" groupName="radGrp" value="2"/> <mx:RadioButton label="Sphere" groupName="radGrp" value="3"/> <mx:RadioButton label="Cylinder" groupName="radGrp" value="4"/> <mx:RadioButton label="Cone" groupName="radGrp" value="5"/> <mx:RadioButton label="PaperPlane" groupName="radGrp" value="6"/> <mx:RadioButton label="ParticleField" groupName="radGrp" value="7"/> </mx:VBox> <mx:VBox borderStyle="solid" backgroundColor="0xCCCCCC" backgroundAlpha="0.5" paddingBottom="10" paddingLeft="10" paddingRight="10" paddingTop="10"> <mx:Label text="Rotate Object on:" fontWeight="bold"/> <mx:CheckBox id="Xaxis" label="X Axis" click="checkAxis(event);"/> <mx:CheckBox id="Yaxis" label="Y Axis" click="checkAxis(event);"/> <mx:CheckBox id="Zaxis" label="Z Axis" click="checkAxis(event);"/> <mx:Spacer height="15"/> <mx:Button label="Reset" click="reset();"/> </mx:VBox> <mx:HBox id="hcanv" borderStyle="solid" backgroundColor="0x010111" width="400" height="400"/> </mx:HBox> </mx:Application>