Foros del Web » Creando para Internet » Flash y Actionscript »

Generar botones desde un xml

Estas en el tema de Generar botones desde un xml en el foro de Flash y Actionscript en Foros del Web. Hola, estoy generando un boton por cada nodo, quiero que al hacer click sobre ese boton se carguen unos datos a un cuadro de texto ...
  #1 (permalink)  
Antiguo 29/11/2008, 21:50
Avatar de Yara  
Fecha de Ingreso: julio-2003
Ubicación: Santo Domingo, República
Mensajes: 59
Antigüedad: 21 años, 4 meses
Puntos: 0
Generar botones desde un xml

Hola, estoy generando un boton por cada nodo, quiero que al hacer click sobre ese boton se carguen unos datos a un cuadro de texto y un movieclip.

En el XML tengo esto
Código HTML:
<?xml version="1.0" encoding="iso-8859-1"?>
<agenda>

  <evento id="2">
    <fecha>25.12.2008</fecha>
    <nombre>Fiesta en Barcelona</nombre>
    <enlace>../images/agenda/chilling-on-the-beach.jpg</enlace>
    <contenido>A view of the remains of Brightons West Pier through a sculpture on the beach.
Taken late one summers day whilst people were chilling with a beer (or two) and a BBQ on the beach. </contenido>
    <tumb>../images/agenda/tumbnails/fiesta.jpg</tumb>
  </evento>
  
  <evento id="1">
    <fecha>22.12.2008</fecha>
    <nombre>Lanzamiento revista lados</nombre>
    <enlace>../images/agenda/lanzamiento-revista-lados.jpg</enlace>
    <contenido>All spreads from Issue 1
la(dos) magazine is a free printed magazine covering Art & Culture.
Is is distributed in Spain.
Art direction Hanko Jacobsen, Raul Allen
Page formating and editing Elena Veguillas
We are currently looking for people to contribute to the magazine.
Web designers, photographers, illustrators, designers and musicians alike are welcome to submit material for consideration.</contenido>
    <tumb>../images/agenda/tumbnails/tiempo.jpg</tumb>
  </evento>
  
</agenda> 
En mi Flash tengo esto:

Código:
var info:XML = new XML();
info.ignoreWhite = true;
info.load("../agenda.xml");

info.onLoad = function(suceso:Boolean) {
	if (suceso) {
		var agenda:Array = this.firstChild.childNodes;
		for (i=0; i<agenda.length; i++) {
			_root.createEmptyMovieClip("contenedor",_root.getNextHighestDepth());
			_root.contenedor.attachMovie("agenda_mc","datos"+i,_root.getNextHighestDepth());
			_root.contenedor["datos"+i]._x = 250;
			_root.contenedor["datos"+i]._y = 150+(i*130);
			_root.contenedor["datos"+i].fecha.text = agenda[i].childNodes[0].firstChild;
			_root.contenedor["datos"+i].titulo.text = agenda[i].childNodes[1].firstChild;
			_root.contenedor["datos"+i].tumb.loadMovie(agenda[i].childNodes[4].firstChild);
			_root.contenedor["datos"+i].enlace.onRelease = function() {
				_root.titulo_big.text = agenda[i].childNodes[1].firstChild;
				_root.big.loadMovie(agenda[i].childNodes[2].firstChild);
				_root.contenido.htmlText = agenda[i].childNodes[3].firstChild;
			};

			//Evento por defecto
			_root.titulo_big.text = agenda[i].childNodes[1].firstChild;
			_root.big.loadMovie(agenda[i].childNodes[2].firstChild);
			_root.contenido.htmlText = agenda[i].childNodes[3].firstChild;

		}
	} else {
		trace("error en cargar la información");
	}
};
El problema está que al presionar el boton ENLACE, los campos contenido, big y titulo big no se llenan.
__________________
Yara
tomxavier.com
  #2 (permalink)  
Antiguo 30/11/2008, 18:03
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 11 meses
Puntos: 5
Respuesta: Generar botones desde un xml

Prueba esto:

Código PHP:
var info:XML = new XML();
info.ignoreWhite true;
info.load("../agenda.xml");
var 
agenda:Array = Array();
actual=0;

info.onLoad = function(suceso:Boolean
{
    if (
suceso
    {
        var 
agenda:Array = this.firstChild.childNodes;
        for (
i=0i<agenda.lengthi++) 
        {
            
_root.createEmptyMovieClip("contenedor",_root.getNextHighestDepth());
            
_root.contenedor.attachMovie("agenda_mc","datos"+i,_root.getNextHighestDepth());
            
_root.contenedor["datos"+i]._x 250;
            
_root.contenedor["datos"+i]._y 150+(i*130);
            
_root.contenedor["datos"+i].fecha.text agenda[i].childNodes[0].firstChild;
            
_root.contenedor["datos"+i].titulo.text agenda[i].childNodes[1].firstChild;
            
_root.contenedor["datos"+i].tumb.loadMovie(agenda[i].childNodes[4].firstChild);
        }
        
defineBotones(agenda.length);
    }
    else 
    {
        
trace("error en cargar la información");
    }
};

function 
defineBotones(valor)
{
    for(
l=1;l<valor;l++)
    {
        
creaRelease(l)
    }
}

function 
creaRelease(valor)
{
    
_root.contenedor["datos"+valor].enlace.onRelease = function() 
    {
        
actual=valor;
        
coloca();
    }
}

function 
coloca()
{
    
_root.titulo_big.text agenda[actual].childNodes[1].firstChild;
    
_root.big.loadMovie(agenda[actual].childNodes[2].firstChild);
    
_root.contenido.htmlText agenda[actual].childNodes[3].firstChild;

El problema creo que está en que al definir los botones utilizas la variable 'i' que usas en este bucle:
Código PHP:
for (i=0i<agenda.lengthi++) 
Pero ten en cuenta que el evento no coge el valor actual de 'i' a cada iteración, sino que lo asocia al valor de 'i' cuando se pinche, y la variable 'i' cuando sale del bucle es justo cuando vale agenda.length ya que esa es la condición de finalización del mismo, con lo cual te llama a un nodo que no existe.

No sé si se me escapa algo y te funcionará, pero esa debería de ser la forma correcta.

Es decir, el evento cambia el valor de una variable que llamamos 'actual' y luego la función 'coloca' utiliza esa variable que cambia onRelease para colocar los datos.

Comprendo que pueda parecer un poco absurdo pero asi es.

Si todo te funcionaba menos eso, prueba creo que te debería de funcionar.

Un saludo.
__________________
[+]
[+]

Última edición por yoseman; 30/11/2008 a las 18:14
  #3 (permalink)  
Antiguo 30/11/2008, 18:40
Avatar de Yara  
Fecha de Ingreso: julio-2003
Ubicación: Santo Domingo, República
Mensajes: 59
Antigüedad: 21 años, 4 meses
Puntos: 0
Respuesta: Generar botones desde un xml

Da error da variable indefinida :(

Te puedo enviar el fla asi puedes ver mas claramente?
__________________
Yara
tomxavier.com
  #4 (permalink)  
Antiguo 30/11/2008, 19:00
Avatar de Yara  
Fecha de Ingreso: julio-2003
Ubicación: Santo Domingo, República
Mensajes: 59
Antigüedad: 21 años, 4 meses
Puntos: 0
Respuesta: Generar botones desde un xml

Ya resolví!!

Agregué esto en el llamado del xml:

Código:
_root.contenedor["datos"+i].enlace = agenda[i].childNodes[1].firstChild;
_root.contenedor["datos"+i].enlace1 = agenda[i].childNodes[3].firstChild;
_root.contenedor["datos"+i].enlace2 = agenda[i].childNodes[2].firstChild;

Y en el boton que manda a llenar puse esto:
on (press) {
	_root.titulo_big.text = enlace;
	_root.contenido.htmlText = enlace1;
	_root.big.loadMovie(enlace2);
}
__________________
Yara
tomxavier.com
  #5 (permalink)  
Antiguo 30/11/2008, 19:27
Avatar de yoseman  
Fecha de Ingreso: diciembre-2003
Ubicación: Alicante (Spain)
Mensajes: 471
Antigüedad: 20 años, 11 meses
Puntos: 5
Respuesta: Generar botones desde un xml

Es otra opción, creas una variable intermedia y el botón siempre el mismo código, perfecto.

No sé por qué dará ese error, me habré equivocado en algo.

Pusiste arriba esto?:
Código PHP:
var agenda:Array = Array();
actual=0
es que defini como global agenda al principio para que no diese undefined.

Bueno si ya te funcinó da igual :)

Me alegro que te funcione :)

Salu2 ;)
__________________
[+]
[+]
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:21.