
Hola!!! me encargaron una mini aplicación dinámica que pudiera hacer gráficas como las que les muestro en la parte de arriba, la mecanica es leer un archivo .xml y en base a eso crear los circulos(Atomos) y circulitos(Genes) que orbitan respectivamente, esto no tiene que llevar ningun tipo de animacion solo generar la grafica, el problema es que no siempre seran la misma cantidad de elementos!!!
No tengo mucha experiencia en AS3 pero ya dibuje algunos elementos estaticos, e hice la coneccion con xml, mi gran problema es generar el algoritmo que me permita en dibujar un determinado numero de elementos y acomodarlos en el lugar indicado, tengo pensado algo tipo orbita pero sin movimiento!!
Este es el codigo que llevo hasta ahora:
Código ActionScript :
//Coneccion XML
var url:String="Molecula.xml";
var urlRequest:URLRequest=new URLRequest(url);
var urlLoader=new URLLoader(urlRequest);
var xml:XML;
urlLoader.addEventListener(Event.COMPLETE, onCompleteEvent );
function onCompleteEvent(e:Event) {
xml=new XML(e.target.data);
trace(xml.Marca.Nombre);
trace("----------------");
//trace(xml.Atomos.Atomo.NombreAtomo)
var numAtomos=xml..Atomos.Atomo.length();
for (var k:Number=0; k<numAtomos; k++) {
trace(xml..Atomos.Atomo[k].NombreAtomo);
}//Termina for
}//onCompleteEvent
//Termina XML
//Atomo - Grafica de Pie
import PieChartTest;
var AtomoGen:PieChartTest = new PieChartTest();
this.addChild(AtomoGen);
AtomoGen.x=190;
AtomoGen.y=100;
///////////////////////////////
//Elipse Central
var elipse:Sprite = new Sprite();
elipse.graphics.lineStyle(0,0x000000);
elipse.graphics.beginFill(0xCCCCCC);
elipse.graphics.drawEllipse(0,0,200, 150);//Valores (X,Y, Anchura, Altura)
elipse.graphics.endFill();
//Gen
var gen:Sprite = new Sprite();
gen.graphics.lineStyle(0,0x000000);
gen.graphics.beginFill(0x00B050);
gen.graphics.drawCircle(0,0,5);
gen.graphics.endFill();
var gen2:Sprite = new Sprite();
gen2.graphics.lineStyle(0,0x000000);
gen2.graphics.beginFill(0x00B050);
gen2.graphics.drawCircle(0,0,5);
gen2.graphics.endFill();
//Gen
/*for (var i:Number=1;i==1;i++) {
var gen:Sprite = new Sprite();
gen.graphics.lineStyle(0,0x000000);
gen.graphics.beginFill(0x00B050);
gen.graphics.drawCircle(0,0,5);
gen.graphics.endFill();
this.addChild(gen);
}*/
//Formatos de Texto
var formatoTexto:TextFormat = new TextFormat();
formatoTexto.color=0x000000;
formatoTexto.size=25;
formatoTexto.align='center';
formatoTexto.font='arial';
//
var formatoTextoGen:TextFormat = new TextFormat();
formatoTextoGen.color=0x000000;
formatoTextoGen.size=8;
formatoTextoGen.align='center';
formatoTextoGen.font='arial';
//Texto Elipse
var textfieldelipse:TextField = new TextField();
textfieldelipse.defaultTextFormat=formatoTexto;
textfieldelipse.text="Idea Central";
textfieldelipse.autoSize=TextFieldAutoSize.CENTER;
textfieldelipse.y=55;
textfieldelipse.x=30;
textfieldelipse.border=false;
textfieldelipse.background=false;
textfieldelipse.mouseEnabled=false;
//Texto Atomo
var textfieldatomo:TextField = new TextField();
textfieldatomo.defaultTextFormat=formatoTexto;
textfieldatomo.text="Atomo";
textfieldatomo.autoSize=TextFieldAutoSize.CENTER;
textfieldatomo.y=textfieldatomo.y-20;
textfieldatomo.x=textfieldatomo.x-50;
textfieldatomo.border=false;
textfieldatomo.background=false;
textfieldatomo.mouseEnabled=false;
//Texto Gen
var textfieldgen:TextField = new TextField();
textfieldgen.defaultTextFormat=formatoTextoGen;
textfieldgen.text="Gen de Versatil";
textfieldgen.autoSize=TextFieldAutoSize.CENTER;
textfieldgen.y=-20;
textfieldgen.x=-25;
textfieldgen.border=false;
textfieldgen.background=false;
textfieldgen.mouseEnabled=false;
//Finalmente dibujamos los elemntos
this.addChild(elipse);
elipse.x=237;
elipse.y=150;
elipse.addChild(textfieldelipse);
//
this.addChild(gen);
gen.x=250;
gen.y=50;
gen.addChild(textfieldgen);
this.addChild(gen2);
gen2.x=150;
gen2.y=50;
gen2.addChild(textfieldgen);
AtomoGen.addChild(textfieldatomo);
Espero me puedan ayudar a dar un norte, no tengo claro que hacer!!
Saludos!!!!
