Comunidad de diseño web y desarrollo en internet online

Papervision + interactividad de botones

Citar            
MensajeEscrito el 15 Oct 2008 10:31 am
Buenas...

Tengo una duda a ver si alguien sabe resolvermela ....

Actualmente estoy probando a tope papervision pero a la hora de incluir un moviclip con botones dentro de un plano como material me va genial a excepcion de que no funcionan los botones, ni los scrolls ni nada, sabeis por que?

Os adjunto el codigo de inserccion de el movie y demas cositas:

Código :

 movie = new cover;
         movie.alpha = 1; 

         prev_btn = new SimpleButton();
         with (prev_btn) {
            name = "prev";
            upState = new UpStatePrev();
            downState = new DownStatePrev();
            overState = new OverStatePrev();
            hitTestState = new UpStatePrev();
            x = 20;
            y = 50;
            addEventListener(MouseEvent.MOUSE_UP, handlerMouseUp2);
            enabled = true;
         }
         movie.addChild(prev_btn);
         
         next_btn = new SimpleButton();
         with (next_btn) {
            name = "next";
            upState = new UpState();
            downState = new Oscar();
            overState = new OverState();
            hitTestState = new UpState();
            x = 20;
            y = 50+(prev_btn.height*1.10);
            addEventListener(MouseEvent.MOUSE_UP, handlerMouseUp);
            enabled = true;
         }
         movie.addChild(next_btn);
          
         myMaterial = new MovieMaterial(movie["formulario"], true, true, true); 
         myMaterial.oneSide = false; 
         myMaterial.interactive = true;
         myMaterial.doubleSided = true;
         myMaterial.smooth = true;
              myMaterial.updateBitmap();
         myPlane = new Plane(myMaterial, 1); 
         myPlane.x = ficha.x;
         myPlane.y = ficha.y;
         myPlane.z = ficha.z;
         scene.addChild( myPlane );

Por Trodi

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Oct 2008 01:02 pm
Un ejemplo "simple" de interactividad viene en http://papervision2.com/advanced-interactivity-2/ (aunque supongo que ya le habías echado un vistazo)
No sé dónde andan tu funciones handlerMouseUp ni handlerMouseUp2 -que deberían "pertenecer" a la clase principal- y reconozco mi ignorancia de los parámetros que le pones al new MovieMaterial

Por Eliseo2

710 de clabLevel



 

firefox
Citar            
MensajeEscrito el 15 Oct 2008 03:29 pm
Ummmm ya lo mire y no logre sacar como hacerlo, te pongo el codigo que solo copie parte para no aburrir jajajajaja ;)

Este es el codigo que crea los botones y los mete dentro del moviclip:

Código :

movie = new cover(); //- El moviclip d ela libreria que se llama cover :)
prev_btn = new SimpleButton();
         with (prev_btn) {
            name = "prev";
            upState = new UpStatePrev();
            downState = new DownStatePrev();
            overState = new OverStatePrev();
            hitTestState = new UpStatePrev();
            x = 430;
            y = 350;
            addEventListener(MouseEvent.MOUSE_UP, handlerMouseDown);
            enabled = true;
         }
         movie.addChild(prev_btn);
         
         next_btn = new SimpleButton();
         with (next_btn) {
            name = "next";
            overState = new rollover_boton();
            hitTestState = new rollover_boton();
            x = 530;
            y = 260;
            addEventListener(MouseEvent.MOUSE_UP, handlerMouseUp);
            enabled = true;
         }
         movie.addChild(next_btn);
                       


Este es el codigo que genera el material y el plano con el movieclip:

Código :

myMaterial = new MovieMaterial(movie["formulario"], true, true, true); 
         myMaterial.oneSide = false; 
         myMaterial.interactive = true;
         myMaterial.doubleSided = true;
         myMaterial.smooth = true;
              myMaterial.updateBitmap();

         myPlane = new Plane(myMaterial, 1); 
         myPlane.x = ficha.x;
         myPlane.y = ficha.y;
         myPlane.z = ficha.z;
         scene.addChild( myPlane );
         mc_fichas.push( myPlane );


Esta es la funcion que ejecuta los botones cuando los pulsas ( un simple trace :p ) para ver si funcionan:

Código :

private function handlerMouseUp(evt:MouseEvent):void {
         trace("pulso boton next_btn");
      }
private function handlerMouseDown(evt:MouseEvent):void {
         trace("pulso boton prev_btn");
      }


Todo va ok se genera el plano con el moviclip como material, se mueve el plano puedo rotarlo etc etc, el problema es que no consigo hacer que los botones que he metido dentro del moviclip funcionen o hagan su funcion, incluso si creo los botonoes dentro del moviclip en vez generarlos por codigo tampoco funcionan ... pero si saco la peli de la libreria y la meto directamente en el timeline ... zass funciona ... dentro del plano no :(

Mira qu ele doy vuelta sy no puedo sacarlo, a ver si vosotros podeis ayudarme.

Asias desde ya!!!!

Por Trodi

3 de clabLevel



 

firefox
Citar            
MensajeEscrito el 17 Oct 2008 09:22 pm
Basicamente cuando añades al material esta propiedad:

Código ActionScript :

myMaterial.interactive = true;


Ya se logra interactividad con el material, así que el problema debes tenerlo en otra parte al parecer.

Por elchininet

Claber

3921 de clabLevel

17 tutoriales

Genero:Masculino  

Front-end developer at Booking.com

firefox
Citar            
MensajeEscrito el 06 Feb 2009 02:10 am

elchininet escribió:

Basicamente cuando añades al material esta propiedad:

Código ActionScript :

myMaterial.interactive = true;


Ya se logra interactividad con el material, así que el problema debes tenerlo en otra parte al parecer.
mmm.... buenas, espero no equivocarme al preguntar, ya que no he llegado a utilizar nunca un foro pero...: por qué los objetos primitivas si funcionan para hacer interactividad, mientras que cuando uno intenta meter dos objetos collada en un mismo viewport, estos no funcionan??? (en mi intento utilicé todo lo necesario, las bibliotecas, volver el viewport interactivo, implementar los eventos para los objetos collada, y tambien los materiales volverlos interactivos, pero nada....) ya exprimí toda la red hasta el cansancio, y no he encontrado lo que necesito, por favor alguien que me pueda ayudar se lo agradecería....

Por mannigo

3 de clabLevel



 

msie7
Citar            
MensajeEscrito el 06 Feb 2009 11:48 am

elchininet escribió:

Basicamente cuando añades al material esta propiedad:

Código ActionScript :

myMaterial.interactive = true;


Ya se logra interactividad con el material, así que el problema debes tenerlo en otra parte al parecer.


Aparte de eso, tienes que crear el viewPort como interactivo.

Tengo un ejemplo de interactividad en PPV3d 2 aqui:

Papervision - Ejemplo de materiales interactivos

mannigo, este fin de semana miro lo de los dos collada. Si sigues este ejemplo añadiendo 2 objetos no te fuciona??:

Ejemplo de collada en Flash

Por esedeerre

132 de clabLevel



 

MadRid

opera
Citar            
MensajeEscrito el 10 Feb 2009 04:30 pm
hola esedeerre. Yo había visto ya tu blog, y te digo que me parece genial. El ejemplo que citas ya lo había visto y ensayado, utilicé la biblioteca DAE y también lo hice con la biblioteca Collada, pero como te decía. No funciona la intercatividad con dos o mas objetos (que no sean primitivas). Yo había posteado en otra parte de cristalab el código que tengo donde expongo este mismo problema, aunque lo pondré acá en este mismo hilo:

El codigo que tengo es así:

package{

import flash.display.Sprite;
import flash.events.*;
import org.papervision3d.view.Viewport3D;
import org.papervision3d.scenes.Scene3D;
import org.papervision3d.cameras.Camera3D;
import org.papervision3d.materials.BitmapFileMaterial;
import org.papervision3d.materials.utils.MaterialsList;
import org.papervision3d.objects.parsers.Collada;
import org.papervision3d.render.BasicRenderEngine;
import org.papervision3d.events.*;
import org.papervision3d.events.InteractiveScene3DEvent;

public class PV3DCollada extends Sprite
{
private var viewport: Viewport3D;
private var scene: Scene3D;
private var camera: Camera3D;
private var renderer: BasicRenderEngine;
private var CAMMaterial: BitmapFileMaterial;
private var CAMcollada: Collada;
private var GOBMaterial: BitmapFileMaterial;
private var GOBcollada: Collada;

public function PV3DCollada():void
{

viewport = new Viewport3D(800, 600, false, true);
addChild(viewport);
viewport.buttonMode = true;

scene = new Scene3D();
camera = new Camera3D();
renderer = new BasicRenderEngine();

CAMMaterial = new BitmapFileMaterial("CAMDiffuseMap.jpg");
CAMMaterial.interactive = true;

GOBMaterial = new BitmapFileMaterial("GOBDiffuseMap.jpg");
GOBMaterial.interactive = true;

var CAMmaterialsList:MaterialsList = new MaterialsList();
CAMmaterialsList.addMaterial(CAMMaterial, "CAMDiffuseMap" );

var GOBmaterialsList:MaterialsList = new MaterialsList();
GOBmaterialsList.addMaterial( GOBMaterial, "GOBDiffuseMap" );

CAMcollada = new Collada("CAM.dae", CAMmaterialsList, .1);
scene.addChild(CAMcollada);

GOBcollada = new Collada("GOB.dae", GOBmaterialsList, .1);
scene.addChild(Gobernacioncollada);

GOBcollada.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, GOBClick);
CAMcollada.addEventListener(InteractiveScene3DEvent.OBJECT_CLICK, CAMClick);

addEventListener(Event.ENTER_FRAME, loop);
function loop(e:Event):void
{
renderer.renderScene(scene, camera, viewport);
}

function CAMClick(e:InteractiveScene3DEvent):void
{
e.target.x = Math.random()*1000 - 500;
e.target.y = Math.random()*1000 - 500;
e.target.z = Math.random()*1000 - 500;
}

function GOBClick(e:InteractiveScene3DEvent):void
{
e.target.x = Math.random()*1000 - 500;
e.target.y = Math.random()*1000 - 500;
e.target.z = Math.random()*1000 - 500;
}
}
}
}

Por mannigo

3 de clabLevel



 

msie7
Citar            
MensajeEscrito el 10 Feb 2009 05:54 pm
A ver, el tema con los collada es que tienes que decirle que el material del collada es interactivo, y solo puedes hacerlo cuando el collada ha terminado de cargar. Además es algo enrevesado acceder al objeto y a los materiales. Te dejo este enlace, que viene muy bien explicado:

http://codejockeyscorner.blogspot.com/2008/09/papervision-collad-interactivity-demo.html

Por esedeerre

132 de clabLevel



 

MadRid

opera
Citar            
MensajeEscrito el 13 Feb 2009 12:58 pm
OK, lo probaré este fin de semana que tenga tiempo gracias.

Por mannigo

3 de clabLevel



 

msie7

 

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