
Etiquetas: InteractiveScene3DEvent InteractiveColorMaterial extra interactiveSceneManager renderCamera
package {import flash.display.*;
import flash.events.*;
import org.papervision3d.cameras.*;
import org.papervision3d.objects.*;
import org.papervision3d.scenes.*;
import org.papervision3d.materials.*;
import org.papervision3d.events.*;
import org.papervision3d.utils.*;
public class GuardarVariables extends Sprite {
var contenedor:Sprite; var scene:InteractiveScene3D;var camera:FreeCamera3D;
var contenedor3D:DisplayObject3D = new DisplayObject3D();
var plane:DisplayObject3D; var ism:InteractiveSceneManager;public function GuardarVariables() {
crearEscenario();
crearElementos();
}function crearEscenario() {
contenedor = new InteractiveSprite();
contenedor.x=200;
contenedor.y=200;
addChild(contenedor);
scene = new InteractiveScene3D( contenedor );
camera=new FreeCamera3D ;
camera.z=-700;
camera.zoom=2;
//Este es el controlador de Eventos en 3D. Asocio el evento CLICK a la función mostrarColorPlano //y luego recojo el objeto presionado con el atributo displayObject3D del evento. ism = scene.interactiveSceneManager;InteractiveSceneManager.SHOW_DRAWN_FACES = false;
ism.enableMouse = true;
ism.buttonMode = true;
ism.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, mostrarColorPlano);
addEventListener(Event.ENTER_FRAME,Renderizar);
}function crearElementos():void {
for(var i:uint = 0; i < 10; i++){
var color:uint = Math.random() * 0xffffff;
var material:InteractiveColorMaterial = new InteractiveColorMaterial(color);
material.oneSide=false;
plane=new Plane(material,200,200,1,1);
plane.z = i * 100-500
plane.y = Math.cos(Math.PI * .2 * i)*200
plane.x = Math.sin(Math.PI * .2 * i)*200
//Para almacenar variables en objetos, creo una variable de tipo Object donde almaceno todas las variables del objeto3D. //Después almaceno esta variable de tipo Object dentro de la propiedad extra del objeto 3D.var obj:Object = new Object();
obj.id = i;obj.color = color.toString(16);
plane.extra = obj;contenedor3D.addChild(plane);
}scene.addChild(contenedor3D);
}function Renderizar(event:Event):void {
contenedor3D.rotationY+= (mouseX/10 - 20) - contenedor3D.rotationY / 10;
scene.renderCamera(camera);
} //Esta es la función que se ejecuta al hacer click sobre uno de los planos. Por medio del atributo displayObject3D podemos //detectar sobre que elemento se ha pulsadoprivate function mostrarColorPlano(e:InteractiveScene3DEvent):void{
var c = e.displayObject3D;
var raiz = parent;raiz.Pulsado_txt.text = "ID plano: " + c.extra.id + " Color: " + c.extra.color
} }}
Gracias!!! Está muy bien ver que a alguien le sirve todo esto.
Si tienes la última versión, es que tienes Papervision GreatWhite. Este ejemplo está en 1.7 y tú tienes la 2.
Puedes ver algunos ejemplos de tu versión aquí:
http://www.esedeerre.com/portada/10/papervision-greatwhite-flash-ejemplos-tutoriales-actionscript3.0
Hola Victor, la versión 1.7 de Papervision está en el repositorio de Papervision
Concretamente, en la carpeta "as3/tags/" (también está la versión 1.5