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