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();
}
}
}