main.as
---
var cube:CubeControl=new CubeControl(view_mc);
stop();
CubeControl.as
---
class CubeControl{
private var path:MovieClip;
private var IOService:XMLIOService;
private var dataStorage:ModelDataStorage;
private var paramControl:ParamControl;
private var drawingControl:DrawingControl;
private var VIEW_MC_DEPTH:Number=100;
private var CENTER_X:Number=0;
private var CENTER_Y:Number=0;
function CubeControl(path:MovieClip){
this.path=path;
IOService=new XMLIOService();
dataStorage=new ModelDataStorage();
paramControl=new ParamControl();
path.createEmptyMovieClip("view_mc",VIEW_MC_DEPTH);
path.view_mc._x=CENTER_X;
path.view_mc._y=CENTER_Y;
drawingControl=new DrawingControl(path.view_mc);
load("xml/001.xml");
}
public function load(address:String):Void{
trace("loading:"+address);
dataStorage.reset();
IOService.reset();
IOService.addLoadComplete("loaded",this);
IOService.load(address,null,false);
}
public function loaded(ex:ExXML):Void{
var nodes:Array=ex.firstChild.childNodes;
var pointList:Array;
var lineList:Array;
for(var i:Number=0;i<nodes.length;i++){
var n:XMLNode=XMLNode(nodes[i]);
if(n.nodeName=="pointlist"){
pointList=n.childNodes;
}else if(n.nodeName=="linelist"){
lineList=n.childNodes;
}else{
trace("invalid node. :"+n.nodeName);
}
}
for(var i:Number=0;i<pointList.length;i++){
var n:XMLNode=XMLNode(pointList[i]);
if(n.nodeName=="point"){
var id:String=String(n.attributes.id);
var x:Number=Number(n.attributes.x);
var y:Number=Number(n.attributes.y);
var z:Number=Number(n.attributes.z);
dataStorage.addPoint(id,x,y,z);
}else{
trace("invalid node. :"+n.nodeName);
}
}
for(var i:Number=0;i<lineList.length;i++){
var n:XMLNode=XMLNode(lineList[i]);
if(n.nodeName=="line"){
var id:String=String(n.attributes.id);
var point1:String=String(n.attributes.point1);
var point2:String=String(n.attributes.point2);
dataStorage.addLine(id,point1,point2);
}else{
trace("invalid node. :"+n.nodeName);
}
}
dataStorage.addPointIndexToLineLists();
drawView();
}
public function resetView():Void{
drawingControl.removeAllOvals();
drawingControl.removeAllLines();
}
public function drawView():Void{
drawOvals();
drawLines();
}
private function drawOvals():Void{
var len:Number=dataStorage.getPointListLength();
for(var i:Number=0;i<len;i++){
var x:Number=dataStorage.getPointPosX(i);
var y:Number=dataStorage.getPointPosY(i);
var z:Number=dataStorage.getPointPosZ(i);
var size:Number=50;
var sx:Number=paramControl.getScreenX(x,y,z,size);
var sy:Number=paramControl.getScreenY(x,y,z,size);
var ssize:Number=paramControl.getScreenSize(x,y,z,size);
drawingControl.drawOval(sx,sy,ssize);
}
}
private function drawLines():Void{
var len:Number=dataStorage.getLineListLength();
for(var i:Number=0;i<len;i++){
var index1:Number=dataStorage.getLineIndex1(i);
var index2:Number=dataStorage.getLineIndex2(i);
var x1:Number=dataStorage.getPointPosX(index1);
var y1:Number=dataStorage.getPointPosY(index1);
var z1:Number=dataStorage.getPointPosZ(index1);
var size1:Number=1;
var x2:Number=dataStorage.getPointPosX(index2);
var y2:Number=dataStorage.getPointPosY(index2);
var z2:Number=dataStorage.getPointPosZ(index2);
var size2:Number=1;
var sx1:Number=paramControl.getScreenX(x1,y1,z1,size1);
var sy1:Number=paramControl.getScreenY(x1,y1,z1,size1);
var sx2:Number=paramControl.getScreenX(x2,y2,z2,size2);
var sy2:Number=paramControl.getScreenY(x2,y2,z2,size2);
drawingControl.drawLine(sx1,sy1,sx2,sy2);
}
}
}