Zurück   Flashforum > Software > 3D

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 25-11-2010, 11:52   #1 (permalink)
Neuer User
 
Registriert seit: Oct 2010
Beiträge: 9
papervision 3d problem mit camera.localrotation

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;
		}
		
	}
	
}
mtd068 ist offline   Mit Zitat antworten
Alt 25-11-2010, 12:21   #2 (permalink)
Neuer User
 
Registriert seit: May 2008
Beiträge: 109
Kann man sich das irgendwo anschauen? So kann ich nur vermuten das keyRelease() ausgelösst wurde bevor onRenderTick() die Methode moveCam aufrufen konnte
Wakka ist offline   Mit Zitat antworten
Alt 25-11-2010, 12:22   #3 (permalink)
Neuer User
 
Registriert seit: Oct 2010
Beiträge: 9
zähl jetzt eine variable rauf und setze die localrotation direct in der rendermethode, dann funktionierts?? komische sache..
mtd068 ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
papervision camera berechnung tukinu ActionScript 3 0 17-11-2009 20:39
[Papervision] camera.lookAt() als Tween hmpf ActionScript 3 12 24-09-2009 16:16
Papervision localRotation und rotation luschn 3D 5 30-07-2008 08:49
camera.get() Problem soulbossanova Flash MX 2004 7 29-07-2005 19:02
[Camera]Dynamische Camera Settings zerlettino Flash Media Server 2 05-05-2005 08:55


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:40 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele