Hi.  I wonder if your problem was related to mine.  I do a lot of wireframe
graphics (Segments added to Meshes) with Away3D and was adding listeners to
stage.  One thing I noticed is the mouse events just got eaten whenever I
pointed at any Away3D segment--the mouse hot spot had to over clear space.

I never did figure out why this was.  I know Fabrice mentioned he hadn't
seen the problem in his code.  In the end, rather than keep fooling with it,
I added a transparent layer and catch the mouse events there.

There's definitely something either wrong, or not quite intuitive on this
area though.

Cheers,

BW

On Fri, Apr 1, 2011 at 9:38 AM, Josh Beckwith <[email protected]>wrote:

> Have you tried adding a mouse event listener to the shape instead of
> the stage?
>
> Also, if your UI is going to include more than a few buttons and
> graphics, I recommend using mxml. If you're unfamiliar with it, it
> won't take long to learn. It's pretty similar to html.
>
> On Apr 1, 2:34 am, Hupie <[email protected]> wrote:
> > Hey,
> >
> > I'm pretty new to away3d, actionscript and programming in general (I'm
> > a 3d artist) so please keep that in mind. I want to make a simple HUD
> > on top of a away3d scene but i cant get the event listeners to work on
> > 2d shapes. The hud button should control the camera position as u can
> > see in the code below. For the button i used a simple circle shape and
> > added an event listener to it but unfortunately my method doesn't
> > work.
> >
> > How can i get hud buttons to work (make clickable) in away3d?
> >
> > package
> > {
> >         import away3d.cameras.Camera3D;
> >         import away3d.cameras.TargetCamera3D;
> >         import away3d.containers.ObjectContainer3D;
> >         import away3d.containers.View3D;
> >         import away3d.primitives.Cube;
> >         import flash.display.MovieClip;
> >         import flash.display.Shape;
> >         import flash.display.SimpleButton;
> >         import flash.display.Sprite;
> >         import flash.events.Event;
> >         import flash.events.KeyboardEvent;
> >         import flash.events.MouseEvent;
> >         import flash.geom.Vector3D;
> >
> >         import com.greensock.TweenLite;
> >
> >         [SWF(width = "500", height = "400", frameRate = "60",
> backgroundColor
> > = "#FFFFFF")]
> >
> >         public class Main extends Sprite
> >         {
> >
> >                 private var cam:TargetCamera3D;
> >                 private var View:View3D;
> >                 private var cube:Cube;
> >                 private var cam_dummy:Cube;
> >                 private var currentview:uint = 1;
> >
> >                 private var plek3:Vector3D = new Vector3D( -600, -300,
> 800);
> >                 private var plek2:Vector3D = new Vector3D( -100, 600,
> 500);
> >                 private var plek1:Vector3D = new Vector3D(300, 300, 300);
> >
> >                 private var button:SimpleButton;
> >                 private var shape:Shape;
> >
> >                 private var switchcam:Boolean = new Boolean(false);
> >
> >                 public function Main():void
> >                 {
> >
> >                         // create a basic camera
> >                         cam = new TargetCamera3D();
> >                         cam.position = plek1;
> >
> >                         // create a viewport
> >                         View = new View3D({camera:cam, x:250,y:200});
> >                         addChild(View);
> >
> >                         cube= new Cube();
> >                         View.scene.addChild(cube);
> >
> >                         cam_dummy = new Cube();
> >                         View.scene.addChild(cam_dummy);
> >                         cam_dummy.position = plek1;
> >                         cam_dummy.visible = false;
> >
> >                         stage.addEventListener(Event.ENTER_FRAME,
> onEnterFrame);
> >                         //stage.addEventListener(KeyboardEvent.KEY_DOWN,
> nextview);
> >
> >                         //create button
> >                         button = new SimpleButton();
> >                         addChild(button);
> >                         button.x = 50;
> >                         button.y = 50;
> >
> >                         //create overlay item
> >                         shape = new Shape();
> >                         shape.graphics.beginFill(0x000000, 1);
> >                         shape.graphics.drawCircle(50, 50, 25);
> >                         //shape.graphics.endFill();
> >                         addChild(shape);
> >
> >                         stage.addEventListener(MouseEvent.MOUSE_DOWN,
> nextview);
> >
> >                 }
> >
> >                 public function nextview (e:MouseEvent):void
> >                 {
> >                         trace(e.target);
> >                         if (e.target == shape){
> >                                 switchcam = true;
> >                                 if (currentview == 3) currentview = 1
> >                                 else currentview ++;
> >                                 trace(currentview);
> >
> >                                 if(currentview == 1)
> >                                 TweenLite.to(cam, 1, { x:plek1.x,
> y:plek1.y, z:plek1.z } );
> >                                 else if(currentview == 2)
> >                                 TweenLite.to(cam, 1, { x:plek2.x,
> y:plek2.y, z:plek2.z } );
> >                                 else if(currentview == 3)
> >                                 TweenLite.to(cam, 1, { x:plek3.x,
> y:plek3.y, z:plek3.z } );
> >                         }
> >                 }
> >
> >                 public function onEnterFrame(e:Event):void
> >                 {
> >                         View.render();
> >
> >                 }
> >
> >         }
> >
> >
> >
> >
> >
> >
> >
> > }

Reply via email to