Ir para conteúdo

POWERED BY:

Arquivado

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

lemissel

Banner rotativo

Recommended Posts

E aí pessoal! Sussa?!

 

Buenas, estou tentando fazer aqueles espaços que tem no site da Dell (www.dell.com.br) por exemplo, onde rola uma animação ou imagem, por x tempo e depois ele troca pra próxima.

Geralmente quando faço isso façop estático dentro do flash controlando frames (burro eu sei, mas é que não manjo de AS e agora resolvi começar a manjar ehehehh).

 

Então, para automatizar eu desenvolvi um script PHP que lê um determinado diretório e gera um XML com os arquivos pertinentes. No flash eu obtenho esses arquivos.

O problema é que eu não sei como fazer pra que elle fique parado x tempo até carregar o próximo arquivo. O meu for sempre retorna a última imagem (óbvio).

 

Alguém tem uma luz pra me dar ou um tutorial pra indicar? Não sei nem se o título do post está correto, mas foi o que melhor achei (essa hora meu cérebro está se desligando heheh)

 

Arquivo XML:

<?xml version="1.0" encoding="iso-8859-1"?>
<dados_obtidos>
	<dados imagem="../imagens/layout/fundo.jpg" />
	<dados imagem="../imagens/layout/fundo_old.jpg" />
	<dados imagem="../imagens/layout/fundo_rodape.jpg" />
	<dados imagem="../imagens/layout/fundo_rodape_old.jpg" />
</dados_obtidos>

AS2

Obs.: no palco tenho somente um MC instânciado com o nome de clipe

system.useCodepage = true;

//Variáveis e inicializações
var arquivo:XML = new XML();
var i:Number = 0;
var qtd_total:Number = 0;


arquivo.load("mkt_init.xml");
arquivo.ignoreWhite = true;
arquivo.onLoad = function () {
	qtd_total = this.firstChild.childNodes.length;
	for (i = 0; i<qtd_total; i++) {
		clipe.loadMovie(this.firstChild.childNodes[i].attributes.imagem);		
	}

}

Desde já agradeço!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você precisaria criar uma função que carregue a imagem de x em x segundos, coloca as imagens num array e depois va chamando ela de tempos em tempos:

 

system.useCodepage = true;

//Variáveis e inicializações
var arquivo:XML = new XML();
var i:Number = 0;
var qtd_total:Number = 0;

var arImagens:Array = new Array();

_global.vez = 0;


arquivo.load("mkt_init.xml");
arquivo.ignoreWhite = true;
arquivo.onload = function () {
        qtd_total = this.firstChild.childNodes.length;
        for (i = 0; i<qtd_total; i++) {
               arImagens.push(this.firstChild.childNodes[i].attributes.imagem)              
        }
mostrar()
}

function mostrar(){
clipe.loadMovie(_global.vez++ % arImagens.length);
clearInterval(_global.comecar)
_global.comecar = setInterval(mostrar, 5000);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Poots, setINterval, a mesma lógica do JS, nem me fraguei!!!

Mas ótimo, valeu cara, só consertei a chamada no loadMovie e tá funcionando as pampas, porém gostaria que se possível tu me ajudasse debugnado a linha abaixo...

 

_global.vez++ % arImagens.length

E... fica aí o código final pra quem também tiver essa dúvida (falta fazer o menzinho e tals... mas isso é papo pra mais uns posts heheheh

system.useCodepage = true;

//Variáveis e inicializações
var arquivo:XML = new XML();
var i:Number = 0;
var qtd_total:Number = 0;
var arImagens:Array = new Array();
_global.vez = 0;

arquivo.load("mkt_init.xml");
arquivo.ignoreWhite = true;
arquivo.onLoad = function () {
	qtd_total = this.firstChild.childNodes.length;
	for (i = 0; i<qtd_total; i++) {
		arImagens.push(this.firstChild.childNodes[i].attributes.imagem);
	}
	mostrar();
}

function mostrar(src){
	clipe.loadMovie(arImagens[_global.vez++ % arImagens.length]);
	//trace(arImagens[_global.vez++ % arImagens.length]);
	clearInterval(_global.comecar);
	_global.comecar = setInterval(mostrar, 5000);
}

Compartilhar este post


Link para o post
Compartilhar em outros sites

Quando você cria um array ele começa com o indice 0 e no caso vai até o total de imagens que colocar, dai você precisaria acessar array[0], array[1], array[2] ... so que quando chegar no final, ele precisa voltar pro primeiro indice do array, se você tiver 10 indices e for dando _global.vez ++ quando chegar no array[10] (que seria o 11 pois a conta começa do zero) ele ja ia dar undefined, então ele precisa voltar pro 0, eu faço isso usando mod que é o resto inteiro de uma divisão, por exemplo 5 / 2 = 2.5, se usar somente inteiros vai dar dois palitos pra cada um (como na escola) e sobra um, pois a escolinha ainda não deixava quebrar o palito, então sobraria 1, esse 1 é o mod, então a partir dai 8 % 3 pega a sobra de 8 dividido por 3 que da 2, se for 4 % 2 da zero e assim por diante, então pela lógica se você dividir a quantidade total de fotos por um número crescente, ele sempre vai dar resultados de 0 até o total do valor, se você tem o _global.vez = 10 e der um mod no total de 9 ele vai falar que 10 / 9 da um de sobra, se for 11 % 9 da 2 e assim até o infinito, aqui um scrit simples pra você entender melhor, da até pra fazer o jogo do Pim do Silvio Santos com ele:

 

i = 0;

onEnterFrame = function(){

i++

trace(i % 4);

}

 

abraço,

 

Carneirinho

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.