Comunidad de diseño web y desarrollo en internet online

Actionscrpit y coordenadas en XML

Citar            
MensajeEscrito el 30 Dic 2009 02:38 pm
Como hacer que atraves de actionscript, se lea un XML con coordenadas y que las coordenadas del XMl se reflejen como puntos en el escenario.???


Fredy

Por freddymeister

8 de clabLevel



 

firefox
Citar            
MensajeEscrito el 30 Dic 2009 03:04 pm
Pues solo las escribe en el XML:

Código XML :

<points>
    <item>
        <x>12.3</x>
        <y>34.2</y>
    </item>
</points>


Y luego los cargas, una vez cargados asegurate de pasar los values a Number, y simplemente lo usas como siempre:

Código ActionScript :

clip._x = Number(dato);


Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 31 Dic 2009 08:09 am
Otra opción podria ser asi:

XML en este caso cada nodo accedes por su atributos

Código XML :

<?xml version="1.0" encoding="utf-8"?>
<points> 
    <item x="10.3" y="30.2" />
   <item x="30.3" y="50.2" />
   <item x="24.3" y="60.2" /> 
</points>


Action: en la librería le puse una vinculación a un mc circular y en la línea de tiempo principal o root lo siguiente.

Código ActionScript :

var container:MovieClip = this;
var miXML:XML = new XML();
miXML.ignoreWhite = true;

miXML.onLoad = function(ok) {
   if (ok) {
      var xmlCord:Array = this.firstChild.childNodes;
      for (var i:Number = 0; i<xmlCord.length; i++) {
         var temp:MovieClip = container.attachMovie("punto", "punto"+i, container.getNextHighestDepth());
         temp._x = Number(xmlCord[i].attributes.x);
         temp._y = Number(xmlCord[i].attributes.y);
      }
   } else {
      trace("error leer xml");
   }
};
miXML.load("cordenadas.xml");

Por leobaraldi

351 de clabLevel

3 tutoriales

 

firefox
Citar            
MensajeEscrito el 31 Dic 2009 08:27 am
No hace falta realmente declarar esto:

Código XML :

<?xml version="1.0" encoding="utf-8"?> 


Además te recomendaría usar nodos, son más prolijos que los atributos. Los atributos para comentar data corta y aportes o propiedades específicas. Cuando uno construye con nodos, es más fácil luego crear adiciones, mantenimientos, etc...

Por otra parte, ya que estamos, recomendaría como un consejo básico de programación siempre separar la carga de su uso.

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 31 Dic 2009 09:45 am
Gracias..Hay alguna manera de crear los puntos dinamicamente y que no sean un moviecilp? (Disculpen pero soy novato en esto del actionscript)


Freddymeister

Por freddymeister

8 de clabLevel



 

firefox
Citar            
MensajeEscrito el 31 Dic 2009 12:04 pm
Perdon me referia a que el objeto no fuera un movieclip dibujado a mano, sino un movieclip hecho via actionscript.


Gracias

Por freddymeister

8 de clabLevel



 

firefox
Citar            
MensajeEscrito el 31 Dic 2009 10:34 pm
Si claro que puedes, usando la API de dibujo de Flash.

Un ejemplo básico:

Código ActionScript :

_root.moveTo(100,100);
_root.lineTo(200,100);
_root.lineTo(200,200);
_root.lineTo(100,200);
_root.lineTo(100,100);


Esto te dibujará un cuadrado en el _root. Lee acerca de la API para saber todos sus métodos.

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 31 Dic 2009 11:49 pm
Muy simple, asi podra ser.

Código ActionScript :

var container:MovieClip = this;
var miXML:XML = new XML();
miXML.ignoreWhite = true;

miXML.onLoad = function(ok) {
   if (ok) {
      var xmlCord:Array = this.firstChild.childNodes;
      for (var i:Number = 0; i<xmlCord.length; i++) {
         var temp:MovieClip = container.createEmptyMovieClip("circ"+i, container.getNextHighestDepth());
         temp.lineStyle(10,0xFF0000,100);
         temp.moveTo(Number(xmlCord[i].attributes.x),Number(xmlCord[i].attributes.y));
         temp.lineTo(Number(xmlCord[i].attributes.x),Number(xmlCord[i].attributes.y)+0.5);
      }
   } else {
      trace("error leer xml");
   }
};
miXML.load("cordenadas.xml");

Por leobaraldi

351 de clabLevel

3 tutoriales

 

firefox
Citar            
MensajeEscrito el 06 Ene 2010 05:13 pm
Oh genial, gracias...

Quisiera saber si pueden resolver otra duda mia....basandome en esto mismo, puedo hacer que esta figura se lea desde un xml???

que se dibuje con los datos provenientes de un xml?


Gracias y como podria modificarla? Perdonen lo pregunton.


Freddymeister

Por freddymeister

8 de clabLevel



 

msie8
Citar            
MensajeEscrito el 07 Ene 2010 03:13 am
Si, te respondimos para que hagas justamente eso. SOLO pasa los datos del XML al Flash, nada más.

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox
Citar            
MensajeEscrito el 07 Ene 2010 03:24 pm
Muchas gracias Hernan, una ultima pregunta...en el caso que yo quisiera tener toda esta data para realizar mapas "vivos" (con datos dinamicos) me conviene tener la forma de las regiones o estados a trabajar como libreria o de alguna manera pueden llegarme estas formas dinamicamente?, o se hace muy complicado por la cantidad de millones de puntos involucrados?


Gracias

Freddymeister

Por freddymeister

8 de clabLevel



 

firefox
Citar            
MensajeEscrito el 08 Ene 2010 01:54 am
Te recomendaría no cargar algo así en vectores, es demasiado. Mejor tener predefinidas las regiones y cargalas en PNG o algo

Saludos, Hernán . -

Por Hernán

BOFH

6148 de clabLevel

19 tutoriales
23 articulos

Genero:Masculino   REC Desarrollador de GAIA

Marketing & IT

firefox

 

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