I've wrote simple program? which create cube? and MovieMaterials for
face and back of this cube, which of this sides has 3 buttons. How to
lissten them and rotate a cube when some button was clicked? When I
needed to listen primitives for mouse events - there weren't problems,
but here I need listening for each button, and I have no idea how to
realise it. And I'm trying write programs by OOP principles, and the
second question : is the code is correct by OOP principles?

//in this class I create scene, I'm not shure that I'm doing right
Primitive.as
package {
        import away3d.cameras.HoverCamera3D;
        import away3d.containers.Scene3D;
        import away3d.containers.View3D;
        import away3d.core.render.Renderer;

        import flash.display.Sprite;
        import flash.events.Event;

        public class Primitive extends Sprite
        {
                private var scene:Scene3D;
                private var view:View3D;
                private var cam:HoverCamera3D;

                private var create:CreateObject=new CreateObject();             
 //
is this correct by OOP rules?

                public function Primitive()
                {
                        init();
                        addEventListener(Event.ENTER_FRAME, onEnterFrame);
                }

                private function init():void
                {
                        scene=new Scene3D();

                        cam=new HoverCamera3D({distance:1250});
                        view=new View3D({scene:scene, camera:cam, 
x:(stage.stageWidth/2), y:
(stage.stageHeight/2)});
                        view.renderer = Renderer.CORRECT_Z_ORDER;

                        cam.targetpanangle=cam.panangle=0;
                        cam.targettiltangle=cam.tiltangle=0;
                        cam.maxtiltangle=60;
                        cam.mintiltangle=-60;
                        cam.distance=800;

                        addChild(view);

        
view.scene.addChild(create.createCube());                        //,,,and
is this correct by OOP rules?
                }

                private function onEnterFrame(e:Event):void
                {
                        var cameraSpeed:Number=0.3;

                        cam.targetpanangle=-((mouseX-(stage.stageWidth/2))*0.1);
                        
cam.targettiltangle=-((mouseY-(stage.stageHeight/2))*0.1);

                        cam.hover();
                        view.render();
                }
        }
}

CreateObject.as
package
{
        import away3d.core.base.Object3D;
        import away3d.materials.MovieMaterial;
        import away3d.primitives.Cube;
        import away3d.primitives.data.CubeMaterialsData;

        public class CreateObject
        {
                public function CreateObject()
                {
                }

                public function createCube():Object3D
                {
                        var material:CubeMaterialsData=new CubeMaterialsData();
                        material.front=new MovieMaterial(new FaceMaterial(),
{interactive:true, smooth:true, precision:8, lockH:100, lockW:100});
                        material.back=new MovieMaterial(new BackMaterial(),
{interactive:true, smooth:true, precision:8, lockH:100, lockW:100});
                        var c:Cube=new Cube({});
                        c.cubeMaterials=material;

                        return c;
                }

        }
}

FaceMaterial.as
package
{
        import away3d.test.Button;

        import flash.display.Shape;
        import flash.display.Sprite;

        [SWF(width="100", height="100", frameRate="60",
backgroundColor="0xAAAAAA", quality="high")]
        public class FaceMaterial extends Sprite
        {
                public function FaceMaterial()
                {
                        var rect:Shape=new Shape();
                        rect.graphics.lineStyle(2, 0x000000);
                        rect.graphics.beginFill(0xadcbfa);
                        rect.graphics.drawRect(0,0, 100, 100);
                        addChild(rect);

                        var btnTop:Button=new Button("Top");
                        btnTop.x=10;
                        btnTop.y=10;
                        addChild(btnTop);

                        var btnBack:Button=new Button("Back");
                        btnBack.x=10;
                        btnBack.y=40;
                        addChild(btnBack);

                        var btnBottom:Button=new Button("Bottom");
                        btnBottom.x=10;
                        btnBottom.y=70;
                        addChild(btnBottom);
                }

        }
}

BackMaterial.as
package
{
        import away3d.test.Button;

        import flash.display.Shape;
        import flash.display.Sprite;

        public class BackMaterial extends Sprite
        {
                public function BackMaterial()
                {
                        var rect:Shape=new Shape();
                        rect.graphics.lineStyle(2, 0x000000);
                        rect.graphics.beginFill(0x1d1bf1);
                        rect.graphics.drawRect(0,0, 100, 100);
                        addChild(rect);

                        var btnLeft:Button=new Button("Left");
                        btnLeft.x=10;
                        btnLeft.y=10;
                        addChild(btnLeft);

                        var btnFace:Button=new Button("Face");
                        btnFace.x=10;
                        btnFace.y=40;
                        addChild(btnFace);

                        var btnRight:Button=new Button("Right");
                        btnRight.x=10;
                        btnRight.y=70;
                        addChild(btnRight);
                }

        }
}

Reply via email to