Away3D: Manejo de eventos de ratón para Away 2.2

Away3D: Manejo de eventos de ratón para Away 2.2

Etiquetas: View3D addOnMouseDown MouseEvent3D object Plane

Imagen en reemplazo de flash

Para interactuar con el ratón en objetos 3d en Away3D 2.2, tenemos que seguir 2 pasos:

-Añadir el evento al objeto, utilizando la función addOnMouseDown (en este caso para detectar que hemos presionado en el objeto). A addOnMouseDown le pasamos como parámetro la función en la que se recoje el evento:

  1. p.addOnMouseDown(planoElegido);

-Recoger el objeto pulsado en la función, por medio del parámetro object:

  1. current = e.object;

El código completo:


  1. package{
  2.  
  3. 	import flash.display.Sprite;
  4. 	import flash.events.Event;
  5. 	import away3d.containers.View3D;
  6. 	import away3d.primitives.Plane
  7. 	import away3d.core.base.Object3D;
  8. 	import away3d.materials.ColorMaterial
  9. 	import away3d.events.MouseEvent3D;
  10. 	import gs.TweenMax;
  11.  
  12. 	public class Main extends Sprite{
  13.  
  14. 		private var visor:View3D;
  15. 		private var nPlanos:uint = 100;
  16. 		private var current:Object3D;
  17.  
  18. 		public function Main():void{
  19. 			crearAway();
  20. 			crearPlanos();
  21. 		}
  22.  
  23. 		private function crearAway():void{
  24. 			visor = new View3D({x:250,y:250})
  25. 			addChild(visor);
  26. 			addEventListener(Event.ENTER_FRAME,renderizar);
  27. 		}
  28.  
  29. 		private function crearPlanos():void{
  30. 			for(var i:uint = 0; i < nPlanos; i++){
  31. 				var p:Plane = new Plane({material:new ColorMaterial(Math.floor(Math.random() * 0xffffff)),width:50,height:50})
  32. 				p.x = i%10 * 50 - 225;
  33. 				p.y = Math.floor(i/10) * 50 - 225
  34. 				p.rotationX = -90;
  35. 				p.bothsides = true
  36. 				p.addOnMouseDown(planoElegido);
  37. 				visor.scene.addChild(p);
  38. 			}
  39. 		}
  40.  
  41. 		private function planoElegido(e:MouseEvent3D):void{
  42. 			if(current != null){
  43. 				TweenMax.to(current, .5, {x:e.object.x , y:e.object.y, z:e.object.z});
  44. 			}
  45. 			current = e.object
  46. 			TweenMax.to(current, .5, {x:0 , y:0, z:600});
  47. 		}
  48.  
  49. 		private function renderizar(e:Event):void{
  50. 			visor.render();
  51. 		}
  52.  
  53. 	}
  54.  
  55. }
Comentarios
    • Autor
    • Diego
    Hey podrian poner el archivo fuente para ver bien como funca...
Dejar un comentario
Tu nombre (obligatorio):

E-mail (obligatorio, no se mostrará):

Web:

Comentario: