It might be how you're loading the 3ds file, or what you're casting it
to. Try this.
//your variables
var logo:ObjectContainer3D;
//create 2 new functions
function initLogo():void {
var loader:Loader3D = Max3DS.load("assets/vwc.3ds",
{texturePath:"assets/",name:"logo3D",loadersize:100});
loader.rotationX = 20;
loader.useHandCursor = true;
loader.addOnSuccess(onSuccess);
View.scene.addChild(loader);
}
function onSuccess(event:Loader3DEvent):void {
logo = e.loader.handle as ObjectContainer3D;
logo.addEventListener(MouseEvent3D.MOUSE_DOWN, mov);
}
Then call initLogo(); where you had the original block of code.
On Nov 23, 8:40 am, juliancruz87 <[email protected]> wrote:
> The MouseDown event is not working in away3d.core.base.Object3D object
> after loading at 3ds object using the Max3DS.load function, we adds
> the event listener using the object3D method addOnMouseDown (listener:
> function), but when you click the object it is not generating the
> event, but if we use a primitive object that works perfectly. Please
> we need help ASA because we don’t know what we are doing wrong. Below
> the code used. The Away3D version we are using is 3.4.0.
>
> Thank you very much.
>
> import away3d.cameras.Camera3D;
> import away3d.containers.View3D;
> import away3d.containers.ObjectContainer3D;
>
> import away3d.loaders.Loader3D;
> import away3d.core.base.Object3D;
> import away3d.core.math.Number3D;
> import away3d.events.MouseEvent3D;
> import away3d.events.Object3DEvent;
> import away3d.events.Loader3DEvent;
>
> import away3d.core.base.*;
> import away3d.core.utils.Cast;
> import away3d.core.render.*;
> import away3d.loaders.Max3DS;
> import away3d.loaders.utils.TextureLoader;
>
> import flash.display.Sprite;
> import flash.events.Event;
> import flash.events.KeyboardEvent;
> import flash.ui.Keyboard;
> import flash.events.Event;
> import flash.events.MouseEvent;
>
> [SWF(width="800", height="600", frameRate="600",
> backgroundColor="#000000")];
>
> var cam:Camera3D;
> var lastKey:uint;
> var keyIsDown:Boolean = false;
> var View:View3D;
> var loader:ObjectContainer3D;
> var lastMouseX:Number;
> var lastMouseY:Number;
> var logo:Loader3D;
> var obj3D:Object3D = new Object3D();
>
> cam = new Camera3D();
> cam.z = -2000;
> cam.y = 250;
> cam.x = 250;
>
> View = new View3D({camera:cam,x:300,y:
> 300,mouseChildren:false,mouseZeroMove:false});
> addChild(View);
> View.render();
>
> stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDown);
> stage.addEventListener(KeyboardEvent.KEY_UP,keyUp);
> addEventListener(Event.ENTER_FRAME,onEnterFrame);
> stage.addEventListener(MouseEvent.MOUSE_DOWN,LogoMouseDown);
>
> function onEnterFrame(e:Event):void{
>
> if(keyIsDown){
> // if the key is still pressed, just keep on moving
> switch(lastKey){
> case 87: cam.moveUp(10); break;
> case 83: cam.moveDown(10); break;
> case 65: cam.moveLeft(10); break;
> case 68: cam.moveRight(10); break;
> case Keyboard.UP :
> cam.moveForward(10); break;
> case Keyboard.DOWN :
> cam.moveBackward(10); break;
> }
> }
> // render the view
> View.render();
>
> }
>
> function keyDown(e:KeyboardEvent):void{
> lastKey = e.keyCode;
> keyIsDown = true;}
>
> function keyUp(e:KeyboardEvent):void{
> keyIsDown = false;}
>
> function MouseDown(event:MouseEvent):void{
> trace("menos");}
>
> function LogoMouseDown(event:MouseEvent):void{
> trace("si");}
>
> function mov(event:MouseEvent3D):void{
> var temp = event.object
> trace(temp);
> trace("si");
>
> }
>
> logo = Max3DS.load("assets/vwc.3ds",
> {texturePath:"assets/",name:"logo3D",loadersize:100});
> obj3D = logo.handle;
> obj3D.rotationX = 20;
> obj3D.useHandCursor = true;
> View.scene.addChild(obj3D);
> obj3D.addOnMouseDown(mov);