Fab,
Are you using the current branch? I don't have it right now, but you should
get it working by setting a mouse down event listener on the cube:
_rc.addOnMouseDown(myEventListener);
and then:
function myEventListener(ev: MouseEvent3D)
{
//You should be able to retrieve the material: ev.material
//But you must cast it as a MovieMaterial to retrieve its moviematerial
properties
//(including the movie by which it was generated)
//so :
var clickedMaterial : MovieMaterial = flash.Lib.as(ev.material,
MovieMaterial);
//will work to retrieve the clicked MovieMaterial
}
2009/8/27 Fab <[email protected]>
>
> Hello everyone,
> I managed to run the code with some changes here and there.
> I wish now that each side of my cube react to mouse click to be
> redirected to the soundtrack accordingly.
> I begin by testing with single-sided, but this does not: it is the
> cube (or rather the container that contains it) which reacts to click
> and not the opposite choice.
> An idea?
> Thank you.
>
> import away3d.containers.Scene3D;
>
> import away3d.containers.View3D;
>
> import away3d.containers.ObjectContainer3D;
>
> import away3d.core.math.Number3D;
>
> import away3d.materials.BitmapMaterial;
>
> import flash.display.Bitmap;
>
> import flash.display.BitmapData;
>
> import away3d.materials.ColorMaterial;
> import away3d.materials.MovieMaterial;
>
> import away3d.materials.WireColorMaterial;
>
> import away3d.primitives.data.CubeMaterialsData;
>
> import away3d.primitives.RoundedCube;
>
> import away3d.primitives.Cube;
>
> import away3d.lights.DirectionalLight3D;
>
> import away3d.cameras.Camera3D;
>
> import flash.Lib;
>
> import flash.display.Sprite;
>
> import flash.events.Event;
>
> import flash.events.MouseEvent;
> import flash.external.ExternalInterface;
>
>
> class Gangs_of_New_York extends flash.display.MovieClip{}
>
>
>
> class Gladiator extends flash.display.MovieClip{}
>
>
> class Kill_Bill extends flash.display.MovieClip{}
>
>
>
> class Ouest extends flash.display.MovieClip{}
>
>
>
> class Loup extends flash.display.MovieClip{}
>
>
>
> class Bon extends flash.display.MovieClip{}
>
>
>
> class Essai_02 extends Sprite {
>
>
> var scene:Scene3D;
>
> var camera:Camera3D;
>
> var view:View3D;
>
> var _rc:Cube;
>
> var _matleft:MovieMaterial;
>
> var _mattop:MovieMaterial;
>
> var _matbottom:MovieMaterial;
>
> var _matfront:MovieMaterial;
>
> var _matright:MovieMaterial;
>
> var _matback:MovieMaterial;
>
> var _gladiator:Gladiator;
>
> var _kill_bill:Kill_Bill;
>
> var _ouest:Ouest;
>
> var _loup:Loup;
>
> var _bon:Bon;
>
> var _gangs:Gangs_of_New_York ;
>
> var _cubedata:CubeMaterialsData;
>
> var move:Bool ;
>
> var lastMouseX:Float;
>
> var lastMouseY:Float;
>
> var lastRotationX:Float;
>
> var lastRotationY:Float;
>
> var light:DirectionalLight3D;
>
> var spherecontainer:ObjectContainer3D;
>
> public function new() {
>
> super();
>
> Lib.current.stage.frameRate=60;
>
>
>
> initEngine();
>
> initMaterials();
>
> initObjects();
>
> initLights();
>
> initListeners();
>
> }
>
> function initMaterials():Void
>
> {
> _gladiator = new Gladiator();
> _matleft = new MovieMaterial(_gladiator,
> {interactive:true, smooth:true, precision:5} );
>
> _gangs = new Gangs_of_New_York ();
> _mattop = new MovieMaterial(_gangs,{interactive:true,
> smooth:true, precision:5} );
>
> _kill_bill = new Kill_Bill();
> _matbottom = new MovieMaterial(_kill_bill,
> {interactive:true, smooth:true, precision:5} );
>
> _ouest = new Ouest();
> _matfront = new MovieMaterial(_ouest,
> {interactive:true, smooth:true, precision:5} );
>
> _loup = new Loup();
> _matright = new MovieMaterial(_loup,{interactive:true,
> smooth:true, precision:5});
>
> _bon = new Bon();
> _matback = new MovieMaterial(_bon,{interactive:true,
> smooth:true, precision:5} );
>
>
> _cubedata = new CubeMaterialsData(
> {top:_mattop,
> bottom:_matbottom,
> front:_matfront,
> back:_matback,
> left:_matleft,
> right:_matright});
>
>
> }
>
> function initEngine():Void
>
> {
>
> scene = new Scene3D();
>
>
>
> camera = new Camera3D();
>
> camera.z = -1000;
>
>
>
> view = new View3D();
>
> view.scene= scene;
>
> view.camera = camera;
>
>
>
> addChild(view);
>
>
>
> }
>
> function initObjects():Void
>
> {
>
> _rc = new Cube(
>
> {cubeMaterials:_cubedata,
>
> width:150,
>
> depth: 150,
>
> height: 150,
>
> rotationY:0.0 } );
>
> view.scene.addChild(_rc);
>
> spherecontainer = new ObjectContainer3D([_rc]);
>
> scene.addChild(spherecontainer);
>
> _matleft.addEventListener( MouseEvent.CLICK,
> face1Click);
>
> }
>
> function initLights():Void
>
> {
>
> //light = new DirectionalLight3D({x:1, y:1, z:-1,
> ambient:0.2});
>
> light = new DirectionalLight3D();
>
> light.x = 1;
>
> light.y = 1;
>
> light.z = -1;
>
> light.ambient = 0.2;
>
>
>
> scene.addChild(light);
>
> }
>
> function initListeners():Void
>
> {
>
> addEventListener(Event.ENTER_FRAME, onEnterFrame);
>
> Lib.current.stage.addEventListener
> (MouseEvent.MOUSE_DOWN, onmousedown);
>
> Lib.current.stage.addEventListener
> (MouseEvent.MOUSE_UP, onmouseup);
>
> Lib.current.stage.addEventListener(Event.RESIZE,
> onresize);
>
> Lib.current.stage.addEventListener( MouseEvent.CLICK,
> face1Click);
>
> onresize();
>
> }
>
> function onEnterFrame(e:Event):Void
>
> {
>
> _rc.rotationY += 1;
>
> if (move) {
>
> spherecontainer.rotationX = (mouseY -
> lastMouseY)/2 + lastRotationX;
>
> if (spherecontainer.rotationX > 90)
>
> spherecontainer.rotationX = 90;
>
> if (spherecontainer.rotationX < -90)
>
> spherecontainer.rotationX = -90;
>
> _rc.rotationY = (lastMouseX - mouseX)/2 +
> lastRotationY;
>
> }
>
>
>
> view.render();
>
> }
>
> function onmousedown(e:MouseEvent):Void
>
> {
>
> lastRotationX = spherecontainer.rotationX;
>
> lastRotationY = _rc.rotationY;
>
> lastMouseX = mouseX;
>
> lastMouseY = mouseY;
>
> move = true;
>
> Lib.current.stage.addEventListener(Event.MOUSE_LEAVE,
> onStageMouseLeave);
>
> }
>
> function onmouseup(e:MouseEvent):Void
>
> {
>
> move = false;
>
> Lib.current.stage.removeEventListener
> (Event.MOUSE_LEAVE, onStageMouseLeave);
>
> }
>
> function onStageMouseLeave(event:Event):Void
>
> {
>
> move = false;
>
> Lib.current.stage.removeEventListener
> (Event.MOUSE_LEAVE, onStageMouseLeave);
>
> }
>
> function onresize(?event:Event = null):Void
>
> {
>
> view.x = Lib.current.stage.stageWidth / 2;
>
> view.y = Lib.current.stage.stageHeight / 2;
>
> }
>
>
> function face1Click( e: Event ):Void
>
> {
>
> var _callJasFunction= "callJavascript";
> var _myURL = "http://www.youtube.com/watch?
> v=WjudEF7yobg <http://www.youtube.com/watch?%0Av=WjudEF7yobg>";
> ExternalInterface.call(_callJasFunction, _myURL);
>
>
> }
>
>
>
>
> public static function main(): Void
>
> {
>
>
>
> Lib.current.addChild(new Essai_02());
>
> }
>
>
>
> }
>
>
> On 26 août, 01:53, Fab <[email protected]> wrote:
> > Hi all,
> > I start with Away3D and HaXe. I do not understand why essai_01.swf
> > file contains errors that seem to be in initMaterials function ():
> > Void ().
> > Thank you for your help.
> >
> > import away3d.containers.Scene3D;
> >
> > import away3d.containers.View3D;
> >
> > import away3d.containers.ObjectContainer3D;
> >
> > import away3d.core.math.Number3D;
> >
> > import away3d.materials.BitmapMaterial;
> >
> > import flash.display.Bitmap;
> >
> > import flash.display.BitmapData;
> >
> > import away3d.materials.ColorMaterial;
> > import away3d.materials.MovieMaterial;
> >
> > import away3d.materials.WireColorMaterial;
> >
> > import away3d.primitives.data.CubeMaterialsData;
> >
> > import away3d.primitives.RoundedCube;
> >
> > import away3d.primitives.Cube;
> >
> > import away3d.lights.DirectionalLight3D;
> >
> > import away3d.cameras.Camera3D;
> >
> > import flash.Lib;
> >
> > import flash.display.Sprite;
> >
> > import flash.events.Event;
> >
> > import flash.events.MouseEvent;
> > import flash.external.ExternalInterface;
> >
> > class Gangs_of_New_York extends Sprite {}
> >
> > class Gladiator extends Sprite {}
> >
> > class Kill_Bill extends Sprite {}
> >
> > class Ouest extends Sprite {}
> >
> > class Loup extends Sprite {}
> >
> > class Bon extends Sprite {}
> >
> > class Essai_01 extends Sprite {
> >
> > var scene:Scene3D;
> >
> > var camera:Camera3D;
> >
> > var view:View3D;
> > var _rc: Cube;
> > var _material:MovieMaterial;
> >
> > var matleft:MovieMaterial;
> > var mattop:MovieMaterial;
> > var matbottom:MovieMaterial;
> > var matfront:MovieMaterial;
> > var matright:MovieMaterial;
> > var matback:MovieMaterial;
> > var _gladiator:Gladiator;
> > var _kill_bill:Kill_Bill;
> > var _ouest:Ouest;
> > var _loup:Loup;
> > var _bon:Bon;
> > var _gangs: Gangs_of_New_York ;
> > var cubedata:CubeMaterialsData;
> > var move:Bool ;
> >
> > var lastMouseX:Float;
> >
> > var lastMouseY:Float;
> >
> > var lastRotationX:Float;
> >
> > var lastRotationY:Float;
> > var light:DirectionalLight3D;
> > var spherecontainer:ObjectContainer3D;
> >
> > public function new() {
> >
> > super();
> >
> > Lib.current.stage.frameRate=60;
> >
> > initEngine();
> >
> > initMaterials();
> >
> > initObjects();
> >
> > initLights();
> >
> > initListeners();
> >
> > }
> >
> > function initMaterials():Void
> >
> > {
> > _gladiator = new Gladiator();
> >
> > matleft = new MovieMaterial(_gladiator );
> > _gangs = new Gangs_of_New_York ();
> > mattop = new MovieMaterial(_gangs );
> > _kill_bill = new Kill_Bill();
> > matbottom = new MovieMaterial(_kill_bill );
> > _ouest = new Ouest();
> > matfront = new MovieMaterial(_ouest );
> > _loup = new Loup();
> > matright = new MovieMaterial(_loup);
> > _bon = new Bon();
> > matback = new MovieMaterial(_bon );
> >
> > cubedata = new CubeMaterialsData(
> > {top:mattop,
> > bottom:matbottom,
> > front:matfront,
> > back:matback,
> > left:matleft,
> > right:matright});
> >
> > }
> >
> > function initEngine():Void
> >
> > {
> >
> > scene = new Scene3D();
> >
> > camera = new Camera3D();
> >
> > camera.z = -1000;
> >
> > view = new View3D();
> >
> > view.scene= scene;
> >
> > view.camera = camera;
> >
> > addChild(view);
> >
> > }
> >
> > function initObjects():Void
> >
> > {
> >
> > _rc = new Cube(
> >
> > {cubeMaterials:cubedata,
> >
> > width:150,
> >
> > depth: 150,
> >
> > height: 150,
> >
> > rotationY:0.0 } );
> > view.scene.addChild(_rc);
> > spherecontainer = new ObjectContainer3D([_rc]);
> >
> > scene.addChild(spherecontainer);
> > _matleft.addEventListener( MouseEvent.CLICK,
> Navigation1);
> > _mattop.addEventListener( MouseEvent.CLICK, Navigation2);
> >
> > }
> >
> > function initLights():Void
> >
> > {
> >
> > //light = new DirectionalLight3D({x:1, y:1, z:-1,
> ambient:0.2});
> >
> > light = new DirectionalLight3D();
> >
> > light.x = 1;
> >
> > light.y = 1;
> >
> > light.z = -1;
> >
> > light.ambient = 0.2;
> >
> > scene.addChild(light);
> >
> > }
> >
> > function initListeners():Void
> >
> > {
> >
> > addEventListener(Event.ENTER_FRAME, onEnterFrame);
> >
> > Lib.current.stage.addEventListener(MouseEvent.MOUSE_DOWN,
> > onMouseDown);
> >
> > Lib.current.stage.addEventListener(MouseEvent.MOUSE_UP,
> onMouseUp);
> >
> > Lib.current.stage.addEventListener(Event.RESIZE,
> onResize);
> > Lib.current.stage.addEventListener( MouseEvent.CLICK,
> Navigation1);
> > Lib.current.stage.addEventListener( MouseEvent.CLICK,
> Navigation2);
> >
> > onResize();
> >
> > }
> >
> > function onEnterFrame(e:Event):Void
> >
> > {
> >
> > _rc.rotationY += 0.2;
> >
> > if (move) {
> >
> > spherecontainer.rotationX = (mouseY -
> lastMouseY)/2 +
> > lastRotationX;
> >
> > if (spherecontainer.rotationX > 90)
> >
> > spherecontainer.rotationX = 90;
> >
> > if (spherecontainer.rotationX < -90)
> >
> > spherecontainer.rotationX = -90;
> >
> > _rc.rotationY = (lastMouseX - mouseX)/2 +
> lastRotationY;
> >
> > }
> >
> > view.render();
> >
> > }
> >
> > function onMouseDown(e:MouseEvent):Void
> >
> > {
> >
> > lastRotationX = spherecontainer.rotationX;
> >
> > lastRotationY = _rc.rotationY;
> >
> > lastMouseX = mouseX;
> >
> > lastMouseY = mouseY;
> >
> > move = true;
> >
> > Lib.current.stage.addEventListener(Event.MOUSE_LEAVE,
> > onStageMouseLeave);
> >
> > }
> >
> > function onMouseUp(e:MouseEvent):Void
> >
> > {
> >
> > move = false;
> >
> > Lib.current.stage.removeEventListener(Event.MOUSE_LEAVE,
> > onStageMouseLeave);
> >
> > }
> >
> > function onStageMouseLeave(event:Event):Void
> >
> > {
> >
> > move = false;
> >
> > Lib.current.stage.removeEventListener(Event.MOUSE_LEAVE,
> > onStageMouseLeave);
> >
> > }
> >
> > function onResize(?event:Event = null):Void
> >
> > {
> >
> > view.x = Lib.current.stage.stageWidth / 2;
> >
> > view.y = Lib.current.stage.stageHeight / 2;
> >
> > }
> >
> > private function Navigation1( e: Event ):Void
> >
> > {
> >
> > var _callJasFunction= "callJavascript";
> > var _myURL = "http://www.youtube.com/watch?
> > v=WjudEF7yobg";
> > ExternalInterface.call(_callJasFunction, _myURL);
> >
> > }
> >
> > private function Navigation2( e: Event ):Void
> >
> > {
> >
> > var _callJasFunction= "callJavascript";
> > var _myURL = "http://www.youtube.com/watch?
> > v=UxCAvK2wIEo";
> > ExternalInterface.call(_callJasFunction, _myURL);
> >
> > }
> >
> > static function main()
> >
> > {
> >
> > Lib.current.addChild(new Essai_01());
> >
> > }
> >
> > }
> >
> > Il s'est produit une erreur de code ActionScript :
> > Error: Error #2136: Le fichier SWF
> file:///home/fab/Installation/AwayCube/essai_01.swf
> > contient des données non valides.
> > at Essai_01/initMaterials()
> > at Essai_01()
> > at Essai_01$/main()
> > at MethodInfo-1982()
> > at flash::Boot()
>