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