2009-08-25 8 views
1

Je rencontre des problèmes pour obtenir un plan animé et interactif créé à partir d'un MovieClip dans la bibliothèque pour afficher n'importe quel type d'animation ou recevoir des événements de souris. En particulier, je rencontre des problèmes avec les différents états des instances de Button dans MovieClip.Problèmes avec le plan interactif

est ici le code de base que je teste avec:

private function init3D():void 
    { 
     viewport = new Viewport3D(1024, 768, false, true); 
     addChild(viewport); 

     camera = new Camera3D(); 
     camera.z = -500; 
     camera.zoom = 1; 
     camera.focus = 500; 
     camera.target = DisplayObject3D.ZERO; 

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

     stage.addEventListener(Event.ENTER_FRAME, loop); 
    } 

    public function addChild3D(link:String):Plane 
    { 
     //var demoPlane:DemoPlane = new DemoPlane(link); 
     //return scene.addChild(demoPlane.getPlane()); 

     var material:MovieAssetMaterial = new MovieAssetMaterial(link, false, true, false, false); 
     material.interactive = true; 
     //material.smooth = true; 
     material.animated = true; 

     var plane_mc:Plane = new Plane(material, 0, 0, 10, 10); 
     scene.addChild(plane_mc); 

    } 

    private function loop(evt:Event):void 
    { 
     renderer.renderScene(scene, camera, viewport); 
    } 
+0

-moi si je me trompe, mais je ne vois pas de gestionnaire pour les boutons dans le code. –

+0

Les gestionnaires sont à l'intérieur du MovieClip que j'ajoute avec addChild3D: start_btn.addEventListener (MouseEvent.CLICK, startDemo); –

Répondre

0

Je viens d'essayer votre code

package{ 

    import org.papervision3d.*; 
    import org.papervision3d.view.*; 
    import org.papervision3d.cameras.*; 
    import org.papervision3d.materials.*; 
    import org.papervision3d.objects.*; 
    import org.papervision3d.objects.primitives.*; 
    import org.papervision3d.scenes.*; 
    import org.papervision3d.render.*; 

    import flash.display.*; 
    import flash.events.*; 

    public class PV3DPlane extends MovieClip{ 

     private var viewport:Viewport3D; 
     private var camera:Camera3D; 
     private var scene:Scene3D; 
     private var renderer:BasicRenderEngine; 
     private var plane:Plane; 

     public function PV3DPlane(){ 
      init3D(); 
     } 

     private function init3D():void 
     { 
       viewport = new Viewport3D(1024, 768, false, true); 
       addChild(viewport); 

       camera = new Camera3D(); 
       camera.z = -500; 
       camera.zoom = 1; 
       camera.focus = 500; 
       camera.target = DisplayObject3D.ZERO; 

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


       plane = addChild3D('asset'); 

       stage.addEventListener(Event.ENTER_FRAME, loop); 
     } 

     public function addChild3D(link:String):Plane 
     { 
       var material:MovieAssetMaterial = new MovieAssetMaterial(link, false, true, false, false); 
       material.interactive = true; 
       //material.smooth = true; 
       material.animated = true; 
       material.doubleSided = true; 

       var plane_mc:Plane = new Plane(material, 0, 0, 10, 10); 
       scene.addChild(plane_mc); 
       return plane_mc; 
     } 

     private function loop(evt:Event):void 
     { 
       plane.rotationY++; 
       renderer.renderScene(scene, camera, viewport); 
     } 
    } 
} 

je fonctionne bien pour moi ... Je viens de créer un clip fictif nommé bouton et a ajouté:

button.addEventListener('click', function(){trace('click')}); 

Je reçois la trace, tout fonctionne très bien. Quelle version de papervision utilisez-vous? Sur cette machine, j'ai une version plus ancienne Papervision3D Public Beta 2.0 - Great White (20.08.25)

ici est le fla et je fichier as.

+0

Je pense que le problème est que j'essaie d'utiliser SimpleButtons et ceux qui ne sont pas supportés par PV3D. –