Comunidad de diseño web y desarrollo en internet online

Diagrama dinamico de orbitas con XML y AS3

Citar            
MensajeEscrito el 06 Oct 2010 03:41 pm


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!!! :shock:


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!!!!

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

chrome
Citar            
MensajeEscrito el 06 Oct 2010 08:26 pm

Por solisarg

BOFH

13669 de clabLevel

4 tutoriales
5 articulos

Genero:Masculino   Bastard Operators From Hell Premio_Secretos

Argentina

firefox
Citar            
MensajeEscrito el 07 Oct 2010 10:14 pm
Gracias Jorge, aun no he podido encontrar el ejemplo que me mencionas, quizá debo cerrar este post y abrir otro donde simplifique el problema, aunque ya estoy dibujando las figuras y cargando el xml no puedo distribuirlas al rededor de la figura central, no tengo idea de como hacerlo :S creo que las funciones math de seno y coseno pueden tener la respuesta pero no soy bueno para la matemática,

Saludos!!

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

chrome

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.