Comunidad de diseño web y desarrollo en internet online

Cubo con materiales interactivos - eventos

Citar            
MensajeEscrito el 18 Jul 2008 03:45 pm
Hola a todos, estoy realizando en papervision3d un cubo con caras interactivas. El problema que me surgio es que no se como hacer para asignarle eventos a los objetos que se encuentran dentro de los materiales que forman cada una de las caras. Es decir, si quiero acceder a la cara en si puedo atraves de e.face3d.material.name pero si lo que quiero es asignar un evento a un objeto dentro del material desde afuera no se como referenciarlo. Tambien probe con usar la propiedad movie de la clase moviematerial, pero si bien me funcionan los metodos, no consigo que asigne los eventos. Estoy trabajando con la version Great White. Les dejo el codigo:

Código :

import flash.events.MouseEvent;
import flash.events.Event;
import org.papervision3d.scenes.*;
import org.papervision3d.cameras.*;
import org.papervision3d.objects.*;
import org.papervision3d.objects.special.*;
import org.papervision3d.objects.primitives.*;
import org.papervision3d.materials.*;
import org.papervision3d.materials.special.*;
import org.papervision3d.materials.shaders.*;
import org.papervision3d.materials.utils.*;
import org.papervision3d.lights.*;
import org.papervision3d.render.*;
import org.papervision3d.view.*;
import org.papervision3d.events.*;
import org.papervision3d.core.utils.*;
import org.papervision3d.core.utils.virtualmouse.VirtualMouse;
import caurina.transitions.Tweener;
import org.papervision3d.events.InteractiveScene3DEvent;
import org.papervision3d.core.utils.InteractiveSceneManager;

var viewport:Viewport3D = new Viewport3D(550, 400, false, true);
addChild(viewport);
viewport.buttonMode = true;
viewport.x=0;
viewport.y=0;

var renderer:BasicRenderEngine = new BasicRenderEngine();
var scene:Scene3D = new Scene3D();
var manipular:Boolean = true;

var camera:Camera3D = new Camera3D();
camera.zoom = 6;

var mam:MovieMaterial = new MovieMaterial(face);
mam.interactive = true;
mam.smooth = true;
mam.animated = true;
mam.name = "face";

var mam2:MovieMaterial = new MovieMaterial(face2);
mam2.interactive = true;
mam2.smooth = true;
mam2.animated = true;
mam2.name = "face2";

var mam3:MovieMaterial = new MovieMaterial( face3 );;
mam3.interactive = true;
mam3.smooth = true;
mam3.animated = true;
mam3.name = "face3";


var mam4:MovieMaterial = new MovieMaterial(face4);
mam4.interactive = true;
mam4.smooth = true;
mam4.animated = true;
mam4.name = "face4";

var mov:MovieClip = mam3.movie as MovieClip;
mov.gotoAndStop(2);


var mam5:MovieMaterial = new MovieMaterial(face5);
mam5.interactive = true;
mam5.smooth = true;
mam5.animated = true;
mam5.name = "face5";

var mam6:MovieMaterial = new MovieMaterial(face6);
mam6.interactive = true;
mam6.smooth = true;
mam6.animated = true;
mam6.name = "face6";


var cube:Cube = new Cube(new MaterialsList({
front:mam, 
back:mam2, 
left:mam3, 
right:mam4,
top:mam5, 
bottom:mam6}), 300, 300, 300, 2, 2, 2);
scene.addChild(cube);
cube.x = 0;
cube.y = 0;
camera.x = 100;
camera.y = 200;
addEventListener(Event.ENTER_FRAME, loop);
function loop(e:Event):void {
   renderer.renderScene(scene, camera, viewport);
}

cube.addEventListener(InteractiveScene3DEvent.OBJECT_PRESS, alPresionar);

function alPresionar(e:InteractiveScene3DEvent):void {
   switch (e.face3d.material.name) {
      case "face" :
         manipular = false;
         break;
      case "face2" :
         manipular = false;
         break;
      case "face3" :
         manipular = false;
         break;
      case "face4" :
         manipular = false;
         break;
      case "face5" :
         manipular = false;
         break;
      case "face6" :
         manipular = false;
   }
}



Saludos,

Topicus

Por topicus

18 de clabLevel



 

firefox
Citar            
MensajeEscrito el 23 Jul 2008 07:40 am
En http://papervision2.com/advanced-interactivity-2/ tienes un ejemplo de cubo interactivo
El "tip" es que el material de las caras es un MovieClip

Código :

private var movie:MovieClip = new MovieClip();

Formamos el MovieClip añadiéndole los eventos que queramos y formamos el material de la cara con un

Código :

mat = new MovieMaterial(movie, false, true);

Por Eliseo2

710 de clabLevel



 

firefox

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.