I want to create a new class - WaveCube, I want to do it right, but I
can't understend how works get & set functions in Cube.as
here's my code :
package
{
import away3d.containers.ObjectContainer3D;
import away3d.core.base.Object3D;
import away3d.materials.ColorMaterial;
import away3d.primitives.Plane;
import com.as3dmod.ModifierStack;
import com.as3dmod.modifiers.Perlin;
import com.as3dmod.plugins.away3d.Away3dMesh;
import com.as3dmod.plugins.away3d.LibraryAway3d;
import flash.display.Sprite;
import flash.events.Event;
[SWF(width="650", height="500", frameRate="30",
backgroundColor="0xFFFFFF", quality="high")]
public class WaveCube
{
//--ObjectContainer3D--
public var planeGroup:ObjectContainer3D=new ObjectContainer3D();
//--PRIMITIVES--
private var frontPlane:Plane=new Plane();
private var topPlane:Plane=new Plane();
private var backPlane:Plane=new Plane();
private var bottomPlane:Plane=new Plane();
private var leftPlane:Plane=new Plane();
private var rightPlane:Plane=new Plane();
//--MATERIALS--
private var frontMaterial:ColorMaterial=new
ColorMaterial('red');
private var backMaterial:ColorMaterial=new
ColorMaterial('black');
//--AS3DCom--
private var frontStack:ModifierStack;
private var topStack:ModifierStack;
private var backStack:ModifierStack;
private var bottomStack:ModifierStack;
private var leftStack:ModifierStack;
private var rightStack:ModifierStack;
public function WaveCube(_width:Number=100, _height:Number=100,
_depth:Number=100, _segmentsW:int=10, _segmentsH:int=10,
_perlin:Number=0.1)
{
planeProperties(frontPlane, _width, _height, 0, 0,
_depth/2+10, 90,
0, 180, _segmentsW, _segmentsH);
planeProperties(topPlane, _width, _depth, 0,
-_height/2-10, 0,
-180, 0, 180, _segmentsW, _segmentsH);
planeProperties(backPlane, _width, _height, 0, 0,
-_depth/2-10,
270, 0, 180, _segmentsW, _segmentsH);
planeProperties(bottomPlane, _width, _depth, 0,
_height/2+10, 0, 0,
0, 180, _segmentsW, _segmentsH);
planeProperties(leftPlane, _depth, _height,
_width/2+10, 0, 0, 90,
-90, 180, _segmentsW, _segmentsH);
planeProperties(rightPlane, _depth, _height,
-_width/2-10, 0, 0,
90, 90, 180, _segmentsW, _segmentsH);
frontStack=new ModifierStack(new LibraryAway3d,
frontPlane);
var frontPerlin:Perlin=new Perlin(_perlin);
frontStack.addModifier(frontPerlin);
topStack=new ModifierStack(new LibraryAway3d, topPlane);
var topPerlin:Perlin=new Perlin(_perlin);
topStack.addModifier(topPerlin);
backStack=new ModifierStack(new LibraryAway3d,
backPlane);
var backPerlin:Perlin=new Perlin(_perlin);
backStack.addModifier(backPerlin);
bottomStack=new ModifierStack(new LibraryAway3d,
bottomPlane);
var bottomPerlin:Perlin=new Perlin(_perlin);
bottomStack.addModifier(bottomPerlin);
leftStack=new ModifierStack(new LibraryAway3d,
leftPlane);
var leftPerlin:Perlin=new Perlin(_perlin);
leftStack.addModifier(leftPerlin);
rightStack=new ModifierStack(new LibraryAway3d,
rightPlane);
var rightPerlin:Perlin=new Perlin(_perlin);
rightStack.addModifier(rightPerlin);
planeGroup.addChild(frontPlane);
planeGroup.addChild(topPlane);
planeGroup.addChild(backPlane);
planeGroup.addChild(bottomPlane);
planeGroup.addChild(leftPlane);
planeGroup.addChild(rightPlane);
}
public function get cube():ObjectContainer3D
{
return planeGroup;
}
private function planeProperties(plane:Plane, width:Number,
height:Number, x:int, y:int, z:int, rotX:int, rotY:int, rotZ:int,
segmW:int, segmH:int):void
{
plane.bothsides=true;
plane.material=backMaterial;
plane.back=frontMaterial;
plane.x=x;
plane.y=y;
plane.z=z;
plane.rotationX=rotX;
plane.rotationY=rotY;
plane.rotationZ=rotZ;
plane.segmentsW=segmW;
plane.segmentsH=segmH;
plane.width=width;
plane.height=height;
}
public function apply():void
{
frontStack.apply();
topStack.apply();
backStack.apply();
bottomStack.apply();
leftStack.apply();
rightStack.apply();
}
}
}
and the code which display it :
package
{
import away3d.cameras.HoverCamera3D;
import away3d.containers.ObjectContainer3D;
import away3d.containers.Scene3D;
import away3d.containers.View3D;
import away3d.materials.ColorMaterial;
import away3d.primitives.Plane;
import com.as3dmod.ModifierStack;
import com.as3dmod.modifiers.Perlin;
import com.as3dmod.plugins.away3d.Away3dMesh;
import com.as3dmod.plugins.away3d.LibraryAway3d;
import flash.display.Sprite;
import flash.events.Event;
[SWF(width="650", height="500", frameRate="30",
backgroundColor="0xFFFFFF", quality="high")]
public class Display_Wave_Cube extends Sprite
{
//--SCENE--
private var scene:Scene3D;
private var view:View3D;
private var cam:HoverCamera3D;
//--PRIMITIVES--
private var waveCube:WaveCube;
public function Display_Wave_Cube():void
{
scene=new Scene3D();
cam=new HoverCamera3D();
view=new View3D({scene:scene, camera:cam,
x:stage.stageWidth/2,
y:stage.stageHeight/2});
cam.targetpanangle=cam.panangle=-15;
cam.targettiltangle=cam.tiltangle=0;
cam.maxtiltangle=20;
cam.mintiltangle=-20;
cam.distance=1000;
cam.focus=100;
addChild(view);
addObjects();
addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function addObjects():void
{
waveCube=new WaveCube(100, 200, 200);
view.scene.addChild(waveCube.cube);
}
private function onEnterFrame(e:Event):void
{
waveCube.apply();
cam.targetpanangle=-((mouseX-(stage.stageWidth/2))*0.6);
cam.targettiltangle=-((mouseY-(stage.stageHeight/2))*0.2);
cam.hover();
view.render();
}
}
}
how must I change my code to set width, height etc in this way:
waveCube=new WaveCube();
waveCube.width=300;
waveCube.height=200;
waveCube.depth=50;
and add my cube on stage in this way:
view.scene.addChild(waveCube);