import org.papervision3d.cameras.CameraType; import org.papervision3d.lights.PointLight3D; import org.papervision3d.materials.ColorMaterial; import org.papervision3d.materials.MovieMaterial; import org.papervision3d.materials.BitmapFileMaterial; import org.papervision3d.materials.WireframeMaterial; import org.papervision3d.materials.special.CompositeMaterial; import org.papervision3d.materials.utils.MaterialsList; import org.papervision3d.objects.primitives.Plane; import org.papervision3d.objects.primitives.Cube; import org.papervision3d.objects.parsers.MD2; import org.papervision3d.view.BasicView; import org.papervision3d.events.*; stage.quality = StageQuality.MEDIUM; var light:PointLight3D = new PointLight3D(); var view:BasicView; var plane:Plane; var cube:Cube; var materialsList:MaterialsList; var modelURL:String = "banana/TRIS.MD2"; var materialURL:String = "banana/Bip.jpg" var material = new BitmapFileMaterial( materialURL ); var md2:MD2 = new MD2(false); var updateID; var isWalking:Boolean = false; var isKeydown:Boolean = false; var isJumping:Boolean = false; view = new BasicView(600, 400, true, true, CameraType.FREE); light.x = 500; light.z = 600 plane = new Plane() plane.rotationX = 90 plane.y = -200 var front:ColorMaterial = new ColorMaterial(0x000000,1); var back:ColorMaterial = new ColorMaterial(0x222222,1); var top:ColorMaterial = new ColorMaterial(0x444444,1); var bottom:ColorMaterial = new ColorMaterial(0x666666,1); var left:ColorMaterial = new ColorMaterial(0x888888,1); var right:ColorMaterial = new ColorMaterial(0xCCCCCC,1); materialsList = new MaterialsList({ front: front, back: back, top: top, bottom: bottom, left: left, right: right }) cube = new Cube(materialsList, 100, 20); cube.rotationY = 30; cube.rotationZ = 20; cube.z = 500; cube.scaleY = 0; md2.rotationX = -90; md2.rotationY = 90; view.scene.addChild(light) view.scene.addChild(plane) view.scene.addChild(cube) view.camera.y = 100; view.camera.rotationX = 30; view.camera.z = -100 addChild(view) material.addEventListener(FileLoadEvent.LOAD_COMPLETE, materialComplete); md2.addEventListener(FileLoadEvent.LOAD_COMPLETE, completeModel) material.addEventListener(FileLoadEvent.LOAD_PROGRESS, progressModel); md2.addEventListener(FileLoadEvent.LOAD_ERROR, errorModel) md2.addEventListener(FileLoadEvent.SECURITY_LOAD_ERROR, securityErrorModel) md2.load(modelURL, material); function materialComplete(e:FileLoadEvent):void { view.scene.addChild(md2) view.scene.removeChild(cube) } function securityErrorModel(e:FileLoadEvent):void { } function errorModel(e:FileLoadEvent):void { } function progressModel(e:FileLoadEvent):void { var bl:Number = e.bytesLoaded var bt:Number = e.bytesTotal var p:Number = bl/bt cube.scaleY = p; cube.rotationY+=10 } function completeModel(e:FileLoadEvent):void { stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownHandler) stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUpHandler) stage.addEventListener(MouseEvent.MOUSE_DOWN, onMouseDownHandler); stage.addEventListener(MouseEvent.MOUSE_UP, onMouseUpHandler); addEventListener(Event.ENTER_FRAME, onRenderViewport); updateID = setInterval(update, 1000) } function update():void { if (isWalking) { isKeydown = true; md2.play("crwalk") } if (isJumping) { isJumping = false; } } function onRenderViewport(e:Event):void { view.singleRender(); } function onMouseDownHandler(e:MouseEvent):void { md2.play("attack") } function onMouseUpHandler(e:MouseEvent):void { md2.play("stand") } function onKeyUpHandler(e:KeyboardEvent):void { md2.play("stand") isWalking = false; isKeydown = false; } function onKeyDownHandler(e:KeyboardEvent):void { var speed:Number = 2; if (!isKeydown) { if (e.keyCode == 37 || e.keyCode == 38 || e.keyCode == 39 || e.keyCode == 40) { isWalking = true; } } switch (e.keyCode) { case 37: //left md2.x -=speed md2.rotationY = 180; break; case 38: //top md2.z +=speed md2.rotationY = -90; break; case 39: //right md2.x +=speed md2.rotationY = 0; break; case 40: //bottom md2.z -=speed md2.rotationY = 90; break; case 32: if (!isJumping) { isJumping = true; md2.play("jump"); } break; } switch (e.keyCode) { case 49: trace("1"); md2.play("stand"); break; case 50: trace("2"); md2.play("run"); break; case 51: trace("3"); md2.play("attack"); break; case 52: trace("4"); md2.play("jump"); break; case 53: trace("5"); md2.play("crwalk"); break; case 54: trace("6"); break; case 55: trace("7"); break; case 56: trace("8"); break; case 57: trace("9"); break; } }