Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Recommended Posts

sei que existem vários códigos de slideshow, mas estou tentando fazer uma coisa bem simples e não tô conseguindo entender pq não está funcionando.

tem muita pouca linha, se alguem puder ler e me dizer pq não funciona eu agradeço http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

 

stop();
var banner:XML = new XML();
banner.load("banner.xml");
banner.ignoreWhite = true;
banner.onLoad = function() {

	var total:Number = this.childNodes.length;// variável que recebe o número total de nós do XML

	for(i = 0; i < total; i++){
				
		// carrega o tempo em segundos de cada foto
		var intervalo:Number = (this.childNodes[i].attributes.tempo);
	
		// converte para segundos
		var pausa:Number = intervalo * Number(1000);
		
		var tempo:Number = setInterval(slideshow, pausa);
		
		function slideshow(tempo) {
			// carrega no palco a imagem do XML
			mc_foto.loadMovie((this.childNodes[i].attributes.foto),0);
		
			// carrega no palco a legenda da imagem do XML
			mc_legenda.text = (this.childNodes[i].attributes.legenda);
		}
		
	}
	
}

meu xml é esse:

<?xml version="1.0" encoding="iso-8859-1"?>

<imagem foto="1.jpg" legenda="Foto N°1" tempo="5" />

Compartilhar este post


Link para o post
Compartilhar em outros sites

você colocou uma função dentro do FOR, eu arrumei outros detalhes

 

ACTIONSCRIPT
stop();

var banner:XML = new XML();

banner.load("banner.xml");

banner.ignoreWhite = true;

banner.onLoad = function() {

var cont = 0;

var total:Number = this.childNodes.length;// variável que recebe o número total de nós do XML

 

for(i = 0; i < total; i++){

               

        // carrega o tempo em segundos de cada foto

        var intervalo:Number = (this.childNodes[i].attributes.tempo);

   

        // converte para segundos

        var pausa:Number = intervalo * Number(1000);

       

        var tempo:Number = setInterval(slideshow, pausa);

   

   

}

 

function slideshow(tempo) {

     // carrega no palco a imagem do XML

     mc_foto.loadMovie((banner.childNodes[cont].attributes.foto),0);

       

     // carrega no palco a legenda da imagem do XML

     mc_legenda.text = (banner.childNodes[cont].attributes.legenda);

     

     cont++    

     if(banner.childNodes.length == cont)

        cont = 0;

}

Compartilhar este post


Link para o post
Compartilhar em outros sites

você colocou uma função dentro do FOR, eu arrumei outros detalhes

 

ACTIONSCRIPT
stop();

var banner:XML = new XML();

banner.load("banner.xml");

banner.ignoreWhite = true;

banner.onLoad = function() {

var cont = 0;

var total:Number = this.childNodes.length;// variável que recebe o número total de nós do XML

 

for(i = 0; i < total; i++){

               

        // carrega o tempo em segundos de cada foto

        var intervalo:Number = (this.childNodes[i].attributes.tempo);

   

        // converte para segundos

        var pausa:Number = intervalo * Number(1000);

       

        var tempo:Number = setInterval(slideshow, pausa);

   

   

}

 

function slideshow(tempo) {

     // carrega no palco a imagem do XML

     mc_foto.loadMovie((banner.childNodes[cont].attributes.foto),0);

       

     // carrega no palco a legenda da imagem do XML

     mc_legenda.text = (banner.childNodes[cont].attributes.legenda);

     

     cont++    

     if(banner.childNodes.length == cont)

        cont = 0;

}

 

pow brigadaço, era isso mesmo, eu tenho um problema, penso meio php e coloquei na cabeça que a pausa tinha que ficar dentro e no final do FOR http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

tá estranho e eu não to sabendo pq...

coloquei um trace pra ter uma luz do que pode ser e obtive os seguintes resultados:

 

aparece a foto n° 2 (indice 1) e imprime os traces da variável cont:

0

1

 

aparece a foto n° 4 (indice 3) e imprime os traces da variável cont:

2

3

0

1

 

aparece a foto n° 2 (indice 1) e imprime os traces da variável cont:

2

3

 

aparece a foto n° 4 (indice 3) e imprime os traces da variável cont:

0

1

2

3

 

o código tá assim:

stop();
var banner:XML = new XML();
banner.load("banner.xml");
banner.ignoreWhite = true;
banner.onLoad = function() {
	var cont:Number = 0;
	
	var total:Number = this.childNodes.length;// variável que recebe o número total de nós do XML
	
	for(i = 0; i < total; i++){
					
		// carrega o tempo em segundos de cada foto
		var intervalo:Number = (this.childNodes[i].attributes.tempo);
		
		// converte para segundos
		var pausa:Number = intervalo * Number(1000);
		
		var tempo:Number = setInterval(slideshow, pausa);
	}
	
	function slideshow(tempo) {
		 // carrega no palco a imagem do XML
		 mc_foto.loadMovie((banner.childNodes[cont].attributes.foto),0);
			
		 // carrega no palco a legenda da imagem do XML
		 mc_legenda.text = (banner.childNodes[cont].attributes.legenda);
		 
		 trace("valor do cont: " + cont);
		 
		 cont++;
		 
		 if(total == cont)
		cont = Number(0);
	}
}

tem idéia do que pode ser? http://forum.imasters.com.br/public/style_emoticons/default/assobiando.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

alterei algumas coisas, veja como ficou

 

 

ACTIONSCRIPT
stop();

var banner:XML = new XML();

banner.load("banner.xml");

banner.ignoreWhite = true;

var tempo:Number ;

banner.onLoad = function() {

    var cont:Number = 0;

   

    var total:Number = this.childNodes.length;// variável que recebe o número total de nós do XML

   

 

                   

    // carrega o tempo em segundos de cada foto

    var intervalo:Number = (this.childNodes[0].attributes.tempo);

       

    // converte para segundos

    var pausa:Number = intervalo * Number(1000);

 

    _root.tempo= setInterval(slideshow, pausa);

    }    

 

 

function slideshow() {

 

         clearInterval(_root.tempo)

 

         // carrega no palco a imagem do XML

         mc_foto.loadMovie((banner.childNodes[cont].attributes.foto),0);

           

         // carrega no palco a legenda da imagem do XML

         mc_legenda.text = (banner.childNodes[cont].attributes.legenda);

       

         trace("valor do cont: " + cont);

       

         cont++;

       

         if(total == cont)

                cont = Number(0);

                       

                       

        // carrega o tempo em segundos de cada foto

        intervalo = (banner.childNodes[cont].attributes.tempo);

       

         // converte para segundos

        pausa = intervalo * Number(1000);

               

        _root.tempo= setInterval(slideshow, pausa);

    }

 

 

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.