Hallo,
Warum funktionierts nicht, dass ich die rotation der camera per tastendruck ständig ändere?? camera.orbit funktioniert ja auch ohne probleme..
lg
Code:
package {
import flash.display.Sprite;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.events.MouseEvent;
import flash.ui.Keyboard;
import org.papervision3d.materials.ColorMaterial;
import org.papervision3d.materials.WireframeMaterial;
import org.papervision3d.objects.DisplayObject3D;
import org.papervision3d.objects.primitives.Sphere;
import org.papervision3d.view.BasicView;
import org.papervision3d.cameras.CameraType;
public class myAbschlagmap extends BasicView{
//camera
private var rotX:Number = 0.3;
private var rotY:Number = 0.3;
private var camPitch:Number = 90;
private var camYaw:Number = 270;
private var easeout:Number = 0.2;
private var camSpeed:int = 3;
private var keyRight:Boolean;
private var keyLeft:Boolean;
private var keyUp:Boolean;
private var keyDown:Boolean;
private var keyW:Boolean;
private var keyS:Boolean;
private var keyA:Boolean;
private var keyD:Boolean;
private var statusCounter:int = 0;
private var anzeigen:Anzeigen = new Anzeigen(42);
public function myAbschlagmap (){
// constructor code
super(800, 600, false, false, CameraType.FREE);
stage.frameRate = 40;
init();
startRendering();
}
private function init():void{
stage.addEventListener(KeyboardEvent.KEY_DOWN, keyPress);
stage.addEventListener(KeyboardEvent.KEY_UP, keyRelease);
stage.addEventListener(MouseEvent.CLICK, mouseClick);
var sphere:Sphere = new Sphere(new WireframeMaterial(0x000000), 200);
scene.addChild(sphere);
addAnzeigen();
}
override protected function onRenderTick(e:Event = null):void{
super.onRenderTick();
camera.localRotationY++;
moveCam();
changeView();
}
private function moveCam(){
if(keyUp){
camera.zoom++;
}
if(keyDown){
camera.zoom--;
}
if(keyLeft){
camYaw += ((-camSpeed * rotY) + 270);
}
if(keyRight){
camYaw += ((camSpeed * rotY) + 270);
}
camera.orbit(camPitch, camYaw);
}
private function changeView(){
if(keyW){
camera.localRotationX--;
}
if(keyA){
camera.localRotationY--;
}
if(keyS){
camera.localRotationX++;
}
if(keyD){
camera.localRotationY++;
}
}
private function keyPress(e:KeyboardEvent){
switch(e.keyCode){
case Keyboard.UP:
keyUp = true;
break;
case Keyboard.DOWN:
keyDown = true;
break;
case Keyboard.LEFT:
keyLeft = true;
break;
case Keyboard.RIGHT:
keyRight = true;
break;
case Keyboard.W:
keyW = true;
break;
case Keyboard.S:
keyS = true;
break;
case Keyboard.A:
keyA = true;
break;
case Keyboard.D:
keyD = true;
break;
}
}
private function keyRelease(e:KeyboardEvent){
switch(e.keyCode){
case Keyboard.UP:
keyUp = false;
break;
case Keyboard.DOWN:
keyDown = false;
break;
case Keyboard.LEFT:
keyLeft = false;
break;
case Keyboard.RIGHT:
keyRight = false;
break;
case Keyboard.W:
keyW = false;
break;
case Keyboard.S:
keyS = false;
break;
case Keyboard.A:
keyA = false;
break;
case Keyboard.D:
keyD = false;
break;
}
}
private function mouseClick(e:MouseEvent){
}
private function addAnzeigen():void{
addChild(anzeigen);
anzeigen.y = 800 - anzeigen.height * 1.5;
}
}
}