
Etiquetas: View3D addOnMouseDown MouseEvent3D object Plane
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:
p.addOnMouseDown(planoElegido);
-Recoger el objeto pulsado en la función, por medio del parámetro object:
current = e.object;
El código completo:
package{import flash.display.Sprite;
import flash.events.Event;
import away3d.containers.View3D;
import away3d.primitives.Plane
import away3d.core.base.Object3D;
import away3d.materials.ColorMaterial
import away3d.events.MouseEvent3D;
import gs.TweenMax;
public class Main extends Sprite{
private var visor:View3D;
private var nPlanos:uint = 100;
private var current:Object3D;
public function Main():void{
crearAway();
crearPlanos();
}private function crearAway():void{
visor = new View3D({x:250,y:250})
addChild(visor);
addEventListener(Event.ENTER_FRAME,renderizar);
}private function crearPlanos():void{
for(var i:uint = 0; i < nPlanos; i++){
var p:Plane = new Plane({material:new ColorMaterial(Math.floor(Math.random() * 0xffffff)),width:50,height:50})
p.x = i%10 * 50 - 225;
p.y = Math.floor(i/10) * 50 - 225
p.rotationX = -90;
p.bothsides = true
p.addOnMouseDown(planoElegido);
visor.scene.addChild(p);
} }private function planoElegido(e:MouseEvent3D):void{
if(current != null){
TweenMax.to(current, .5, {x:e.object.x , y:e.object.y, z:e.object.z});
}current = e.object
TweenMax.to(current, .5, {x:0 , y:0, z:600});
}private function renderizar(e:Event):void{
visor.render();
} }}