Hello guys ... Happy New Year ...

I'm trying to make a 6-planes-cube rotate but i have a problem ...

I used the applyRotations method on the container but the result is
not good ...

Maybe you can help me ...

Here is the code :

package
{
        import away3d.containers.ObjectContainer3D;
        import away3d.containers.View3D;
        import away3d.core.base.Vertex;
        import away3d.core.math.Number3D;
        import away3d.geom.Explode;
        import away3d.geom.Mirror;
        import away3d.materials.ColorMaterial;
        import away3d.materials.utils.SimpleShadow;
        import away3d.primitives.Cube;
        import away3d.primitives.Plane;
        import away3d.primitives.ReflectivePlane;
        import away3d.primitives.Sphere;
        import flash.display.Bitmap;
        import flash.display.BitmapData;
        import flash.display.BlendMode;
        import flash.display.Sprite;
        import flash.display.StageAlign;
        import flash.display.StageScaleMode;
        import flash.events.Event;
        import flash.events.KeyboardEvent;
        import flash.filters.BitmapFilterQuality;
        import flash.filters.BlurFilter;
        import flash.geom.Matrix;
        import flash.geom.Rectangle;
        import flash.text.TextField;
        import gs.TweenMax;

        public class Main extends View3D
        {
                private var container:ObjectContainer3D;
                private var planes:Array;

                public function Main():void
                {
                        if (stage) init();
                        else addEventListener(Event.ADDED_TO_STAGE, init);
                }

                private function init(e:Event = null):void
                {
                        removeEventListener(Event.ADDED_TO_STAGE, init);

                        //stage setup
                        stage.scaleMode = StageScaleMode.NO_SCALE;
                        stage.align = StageAlign.TOP_LEFT;

                        //position setup
                        x = this.stage.stageWidth / 2;
                        y = this.stage.stageHeight / 2;

                        //camera setup
                        camera.x = 300;
                        camera.z = -900;
                        camera.y = 100;

                        //planes'array
                        planes = new Array();

                        //containers instances
                        container = new ObjectContainer3D();
                        for (var i:int = 0; i < 6; i+=1)
                                {
                                var col:uint = Math.random() * 0xFFFFFF;
                                var mat:ColorMaterial = new ColorMaterial(col);
                                var p:Plane = new Plane({ width:100, 
height:100, material:mat,
segmentsW:8, segmentsH:8,bothsides:true } );

                                if (i == 0)
                                        {
                                        p.z = -50;
                                        p.rotationX = 90;
                                        }
                                if (i == 1)     p.y = 50;
                                if (i == 2)
                                        {
                                        p.z = 50;
                                        p.rotationX = 90;
                                        }
                                if (i == 3) p.y = -50;
                                if (i == 4)
                                        {
                                        p.x = 50;
                                        p.rotationX = 90;
                                        p.rotationY = 90;
                                        }
                                if (i == 5)
                                        {
                                        p.x = -50;
                                        p.rotationX = 90;
                                        p.rotationY = 90;
                                        }
                                container.addChild(p);
                                planes.push(p);
                                }
                        //scene feed
                        scene.addChild(container);


                        camera.lookAt(new Number3D());

                        //handlers
                        addEventListener(Event.ENTER_FRAME, enterFrame, false, 
0, true);
                        stage.addEventListener(KeyboardEvent.KEY_UP, 
onPressKey, false, 0,
true);
                }

                private function onPressKey(e:KeyboardEvent):void
                        {
                        switch(e.keyCode)
                                {
                                case 37: //left
                                        TweenMax.to(container, 0.3, { 
rotationY:"-90",
onComplete:rotationComplete,onCompleteParams:["y",-90],
overwrite:false } );

                                        break;

                                case 39: //right
                                        TweenMax.to(container, 0.3, { 
rotationY:"90",
onComplete:rotationComplete,onCompleteParams:["y",90],
overwrite:false } );
                                        break;

                                case 38: //up
                                        TweenMax.to(container, 0.3, { 
rotationX:"-90",
onComplete:rotationComplete,onCompleteParams:["x",-90],
overwrite:false } );
                                        break;

                                case 40: //down
                                        TweenMax.to(container, 0.3, { 
rotationX:"90",
onComplete:rotationComplete,onCompleteParams:["x",90],
overwrite:false } );
                                        break;
                                }
                        }
                private function 
rotationComplete(rotation:String,angle:Number):void
                        {
                        container.applyRotations();
                        }
                private function enterFrame(e:Event):void
                        {
                        var diffX:Number = (this.stage.mouseX - Math.round
(this.stage.stageWidth / 2)) / Math.round(this.stage.stageWidth / 2);
                        var diffY:Number = (this.stage.mouseY - Math.round
(this.stage.stageHeight/ 2)) / Math.round(this.stage.stageHeight / 2);
                        render();
                        }
        }
}

the link : http://pastebin.com/m54e44c4a

Thanks for your help !!!

Ghislain

Reply via email to