Hi,

I am working on a sample application in Away3D. It is a bit modified
version of one of the samples available. I am trying to add a
MouseEvent3d to an object of type ObjectContainer3D but it is not
getting triggered. Any idea how I can fix this. The code I am using
is:


package
{
        import away3d.cameras.Camera3D;
        import away3d.cameras.lenses.PerspectiveLens;
        import away3d.containers.ObjectContainer3D;
        import away3d.containers.View3D;
        import away3d.entities.Mesh;
        import away3d.events.LoaderEvent;
        import away3d.events.MouseEvent3D;
        import away3d.events.ResourceEvent;
        import away3d.loading.ResourceManager;
        import away3d.materials.BitmapMaterial;

        import flash.display.Sprite;
        import flash.events.Event;
        import flash.events.MouseEvent;
        import flash.geom.Vector3D;


        [SWF(width="800", height="450", frameRate="60",
backgroundColor="#000000")]
        public class CKUB3D extends Sprite
        {
                private var _view : View3D;
                private var _container : ObjectContainer3D;
                private var mesh:Mesh;
                private var count:int = 0;

                private var materialArray:Array = [];
                private var material:BitmapMaterial;

                [Embed(source="assets/fskin.jpg")]
                private var Mat1:Class;

                [Embed("assets/fsking.jpg")]
                public var Mat2:Class;

                [Embed("assets/fskingr.jpg")]
                public var Mat3:Class;

                [Embed("assets/fskiny.jpg")]
                public var Mat4:Class;

                public function CKUB3D()
                {
                        _view = new View3D();
                        _view.antiAlias = 2;
                        var camera:Camera3D = _view.camera;
                        camera.lens = new PerspectiveLens();
                        camera.z = 100;
                        addChild(_view);

        
ResourceManager.instance.addEventListener(ResourceEvent.RESOURCE_RETRIEVED,
onResourceRetrieved);
                        
ResourceManager.instance.addEventListener(LoaderEvent.LOAD_ERROR,
onResourceLoadingError);
        
ResourceManager.instance.addEventListener(LoaderEvent.LOAD_MAP_ERROR,
onResourceMapsLoadingError);

                        var url:String = "assets/f360.3ds";
                        materialArray = [Mat1, Mat2, Mat3, Mat4];

                        //automatic rock and roll
                        ResourceManager.instance.getResource(url);
                }

                private function onResourceRetrieved(e : ResourceEvent) : void
                {
                        _container = ObjectContainer3D(e.resource);
                        _view.scene.addChild(_container);
                        _view.camera.lookAt(_container.position);

                        _container.scale(10);
                        _container.rotationX = 20;
                        _container.rotationY = 160;

                        var len : uint = _container.numChildren;

                        for (var i : uint = 0; i < len; ++i)
                        {
                                mesh = Mesh(_container.getChildAt(i));
                                material = new BitmapMaterial(new 
materialArray[0]().bitmapData);
                                mesh.material = material;
                        }

                        _view.camera.lens.far = 
Vector3D.distance(_container.position,
_view.camera.position)+1000;
                        _view.camera.lens.near = 10;

                        _view.render();
                        _container.addEventListener(MouseEvent3D.CLICK, 
onContainerClick);
                }

                private function onResourceLoadingError(e:LoaderEvent) : void
                {
                        trace("oops, model load failed");
                }

                private function onResourceMapsLoadingError(e:LoaderEvent) : 
void
                {
                        trace("A map failed to load in this model: 
["+e.url+"]");
                }

                private function onContainerClick(e:MouseEvent):void
                {
                        var len : uint = _container.numChildren;
                        if(count < 4)
                        {
                                for (var i : uint = 0; i < len; ++i)
                                {
                                        mesh = Mesh(_container.getChildAt(i));
                                        material = new BitmapMaterial(new 
materialArray[count]
().bitmapData);
                                        mesh.material = material;
                                }
                        }
                        else
                        {
                                count = -1;
                        }

                        count++;
                        _view.render();
                }
        }
}

Reply via email to