lemissel 0 Denunciar post Postado Dezembro 11, 2009 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
carneirinho 7 Denunciar post Postado Dezembro 11, 2009 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
lemissel 0 Denunciar post Postado Dezembro 11, 2009 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
carneirinho 7 Denunciar post Postado Dezembro 11, 2009 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
Antonelli 0 Denunciar post Postado Dezembro 16, 2009 Galera, tudo bom? Então, acho que é até errado fazer isso, mas queria que dessem uma olhada: http://forum.imasters.com.br/index.php?/topic/375064-scroll-controlado-com-xml-e-flash-como/page__gopid__1449081entry1449081 (tópico que criei, com esse mesmo assunto) Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites