Akroma 0 Denunciar post Postado Junho 25, 2010 Boa noite pessoal, tudo bem? Bom estou fazendo um Disclaimer para um site ... e uma das especificações é ele poder controlar o tempo de cada banner via xml... essa parte ele não funciona o As. stop(); import mx.transitions.Tween; import mx.transitions.easing.*; i=0; var intervalId:Number; System.useCodepage = true; // habilita acentos; var arquivo:XML = new XML(); arquivo.load("images.xml"); arquivo.ignoreWhite = true; // ignora espaços em branco no XML function carrega() { // cria a função "carrega" que mostra o conteúdo target_mc.loadMovie(arquivo.childNodes[0].childNodes.attributes.imagem); } var tempo:Number; function time() { tempo = arquivo.childNodes[0].childNodes.attributes.delay_time*1000; trace(arquivo.childNodes[0].childNodes.attributes.delay_time); } function carregaMais() { // a função que conta o tempo para trocar o banner if(i == total-1) { var aparece:Tween = new Tween (target_mc, "_alpha", Strong.easeOut, 0, 100, 2.0, true); i=0; } else { var aparece:Tween = new Tween (target_mc, "_alpha", Strong.easeOut, 0, 100, 2.0, true); i++; } carrega(); } intervalo = setInterval(carregaMais, time); arquivo.onLoad = function() { total = arquivo.childNodes.childNodes.length; // pegar quantidade de fotos carrega(); } // Botões go_btn.onRelease = function() { if(i == 0) { var aparece:Tween = new Tween (target_mc, "_alpha", Strong.easeOut, 0, 100, 2.0, true); i=total-1; } else { var aparece:Tween = new Tween (target_mc, "_alpha", Strong.easeOut, 0, 100, 2.0, true); i--; } carrega(); clearInterval(intervalo) intervalo = setInterval(carregaMais, time) } back.onRelease = function() { if(i == total-1) { var aparece:Tween = new Tween (target_mc, "_alpha", Strong.easeOut, 0, 100, 2.0, true); i=0; } else { i++; var aparece:Tween = new Tween (target_mc, "_alpha", Strong.easeOut, 0, 100, 2.0, true); } carrega(); clearInterval(intervalo) intervalo = setInterval(carregaMais, time) } e esse é meu xml <galeria> <foto imagem="images/01.swf" delay_time="20000" /> <foto imagem="images/02.swf" delay_time="150" /> <foto imagem="images/03.swf" delay_time="15" /> <foto imagem="images/04.swf" delay_time="20" /> </galeria> Eu realmente ja procurei muita coisa no google... não gosto de perguntar sem pesquisar... se algum puder me ajudar. Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Junho 26, 2010 Inicie a variavel time que você chama varias vezes lá em cima do código fora do XML assim: var time:Number = new Number(0) i=0; var intervalId:Number; E veja se resolve seu problema Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Akroma 0 Denunciar post Postado Junho 26, 2010 Não funcionou, eu não sei mais o que fazer :( Compartilhar este post Link para o post Compartilhar em outros sites
DesenvolvedorRoger 50 Denunciar post Postado Junho 27, 2010 Olha, achei um pouco banguçado o código... Aqui no fórum(eu acho) deve ter muita coisa sobre isso ai, já fez uma busca aqui também? Me add ai, SE não tiver conseguido ainda... Mas, qualquer coisa o amigo ai pode te ajudar também. É que vou dormir agora... ^_^ desenvolvedorroger@msn.com good night! Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Junho 27, 2010 Versão funcionando: stop(); import mx.transitions.Tween; import mx.transitions.easing.*; var i=0; var intervalo; var tempo:Number; var swfs:Array = new Array(); var tempos:Array = new Array(); System.useCodepage = true; // habilita acentos; var arquivo:XML = new XML(); arquivo.load("images.xml"); arquivo.ignoreWhite = true; // ignora espaços em branco no XML var target_mc:MovieClip = _root.createEmptyMovieClip("target_mc", 1); function carrega() { // cria a função "carrega" que mostra o conteúdo target_mc.loadMovie(swfs[i].toString()); if(i == total) i = 0; else i++; time(); clearInterval(intervalo); intervalo = setInterval(carrega, tempo); } function time() { tempo = parseInt(tempos[i])*1000; } function carregaMais() { // a função que conta o tempo para trocar o banner if(i == total-1) { var aparece:Tween = new Tween (target_mc, "_alpha", Strong.easeOut, 0, 100, 2.0, true); i=0; }else { var aparece:Tween = new Tween (target_mc, "_alpha", Strong.easeOut, 0, 100, 2.0, true); i++; } carrega(); } arquivo.onLoad = function() { total = arquivo.childNodes[i].childNodes.length; // pegar quantidade de fotos for(var a=0; a < total; a++){ swfs.push(arquivo.childNodes[0].childNodes[a].attributes.imagem); tempos.push(arquivo.childNodes[0].childNodes[i].attributes.delay_time); } time(); carrega(); } // Botões go_btn.onRelease = function() { if(i == 0) { var aparece:Tween = new Tween (target_mc, "_alpha", Strong.easeOut, 0, 100, 2.0, true); i=total-1; } else { var aparece:Tween = new Tween (target_mc, "_alpha", Strong.easeOut, 0, 100, 2.0, true); i--; } carrega(); clearInterval(intervalo) intervalo = setInterval(carregaMais, time) } back.onRelease = function() { if(i == total-1) { var aparece:Tween = new Tween (target_mc, "_alpha", Strong.easeOut, 0, 100, 2.0, true); i=0; }else { i++; var aparece:Tween = new Tween (target_mc, "_alpha", Strong.easeOut, 0, 100, 2.0, true); } carrega(); clearInterval(intervalo) intervalo = setInterval(carregaMais, time); } Mas não tem sua animaçãozinha de troca de clip... Veja o que eu fiz e tente adaptar para fazer sua troca. Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Akroma 0 Denunciar post Postado Junho 27, 2010 Rapaz.... muito obrigada funcionou perfeito... só um problema a ultima imagem do do xml da um erro e passa como UNDEFINED. Eu dei uma olhada mas essa parte de lógica eu me perco um pouco D: Bjinho Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Junho 27, 2010 function carrega() { // cria a função "carrega" que mostra o conteúdo target_mc.loadMovie(swfs[i].toString()); if(i == total - 1) i = 0; else i++; time(); clearInterval(intervalo); intervalo = setInterval(carrega, tempo); } Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Akroma 0 Denunciar post Postado Julho 20, 2010 Boa noite pessoas, Bom resolvi usar esse tópico de exemplo É possível colocar um préloader em cada imagem? eu ja procurei procurei e nada Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Julho 21, 2010 Se você utilizar o MovieClipLoader sim você pode utilizar a chamada onLoadProgress... Como usar: http://berseck.wordpress.com/2009/04/01/como-imagens-em-sequencia-com-um-loader/ Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Akroma 0 Denunciar post Postado Julho 22, 2010 Se você utilizar o MovieClipLoader sim você pode utilizar a chamada onLoadProgress... Como usar: http://berseck.wordpress.com/2009/04/01/como-imagens-em-sequencia-com-um-loader/ Abraços Bom dia berseck Cara, eu adaptei o que você passou mas não sai do zero stop();import mx.transitions.Tween;import mx.transitions.easing.*;i=0;var intervalId:Number;tempo=1500000;//Digo que meu campo de texto = 0campo = 0+"%";//Aqui é o numero da porcentagem carregadavar pct:Number = new Number();//Listener Objectvar listener:Object = new Object();var swfs:Array = new Array();var urls:Array = new Array();var janela:Array = new Array();var camiXML:String = _root["arquivoVC"];//Listener Objectvar listener:Object = new Object();var loaded = arquivo.getBytesLoaded(); var totalL = arquivo.getBytesTotal(); var target_mc:MovieClipLoader = new MovieClipLoader();System.useCodepage = true; // habilita acentos;var arquivo:XML = new XML();//arquivo.load(camiXML);arquivo.load("images.xml"); arquivo.ignoreWhite = true; // ignora espaços em branco no XMfunction carrega() { // cria a função "carrega" que mostra o conteúdo target_mc.loadClip(arquivo.childNodes[0].childNodes[i].attributes.imagem, alvo); linkUrl() trace(arquivo.childNodes[0].childNodes[i].attributes.imagem);trace("Bytes Carregado " + arquivo.getBytesLoaded())trace("Bytes Total " + arquivo.getBytesTotal()) }function carregaMais() { // a função que conta o tempo para trocar o banner if(i + 1 == total) { var aparece:Tween = new Tween (target_mc, "_alpha", Strong.easeOut, 0, 100, 2.0, true); i=0; } else { var aparece:Tween = new Tween (target_mc, "_alpha", Strong.easeOut, 0, 100, 2.0, true); i++; } carrega();}//Crio a função que ao iniciar o arquivo ele vai carregar os arquivos separadamente.listener.onLoadProgress = function(alvo:MovieClip, loaded:Number, totalL:Number):Void{pct = Math.floor((loaded/totalL)*100);campo = pct+"%";}listener.onLoadInit = function(){if(i < swfs.length){carrega();}}//Adiciono o listenertarget_mc.addListener(listener);function linkUrl() { link = arquivo.childNodes[0].childNodes[i].attributes.url; tarLink = arquivo.childNodes[0].childNodes[i].attributes.targ; trace(link); trace(tarLink);}link_btn.onRelease = function () { getURL(link, tarLink); }intervalo = setInterval(carregaMais, tempo)arquivo.onLoad = function() { total = arquivo.childNodes[i].childNodes.length; // pegar quantidade de fotos for(var a=0; a < total; a++){ swfs.push(arquivo.childNodes[0].childNodes[a].attributes.imagem); urls.push(arquivo.childNodes[0].childNodes[i].attributes.url); janela.push(arquivo.childNodes[0].childNodes[i].attributes.targ);} carrega();}// Botõesback_btn.onRelease = function() { if(i == 0) { var aparece:Tween = new Tween (target_mc, "_alpha", Strong.easeOut, 0, 100, 2.0, true); i=total-1; } else { var aparece:Tween = new Tween (target_mc, "_alpha", Strong.easeOut, 0, 100, 2.0, true); i--; } carrega(); clearInterval(intervalo) intervalo = setInterval(carregaMais, tempo)}go_btn.onRelease = function() { if(i == total-1) { var aparece:Tween = new Tween (target_mc, "_alpha", Strong.easeOut, 0, 100, 2.0, true); i=0; } else { i++; var aparece:Tween = new Tween (target_mc, "_alpha", Strong.easeOut, 0, 100, 2.0, true); } carrega(); clearInterval(intervalo) intervalo = setInterval(carregaMais, tempo)} Opa editei a resposta porque vi onde errei... só que agora a imagem não aparece.... e tem como fazer o loader aparecer com a imagem no fundo só troca pra outra quando ela estiver carregada Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Julho 22, 2010 Com 2 MovieClips diferentes sim... e ir alterando Se não, não tem como... afinal você precisa iniciar o carregamento em um MovieClip para que possa acessar a função de progress... Crie 2 MovieClips e vá alternando entre eles. Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Akroma 0 Denunciar post Postado Julho 22, 2010 Com 2 MovieClips diferentes sim... e ir alterando Se não, não tem como... afinal você precisa iniciar o carregamento em um MovieClip para que possa acessar a função de progress... Crie 2 MovieClips e vá alternando entre eles. Abraços Certo, eu só tenho uma duvida.. como descubro que um MC esta sendo usado pra ele usar o outro, eu coloco um if dentro do carrega(), mas não imagino como proceder. Eu fiz assim mas não deu muito certo e a % não funciona mais stop();import mx.transitions.Tween;import mx.transitions.easing.*;i=0;var intervalId:Number;tempo=1500000;//Digo que meu campo de texto = 0campo = 0+"%";//Aqui é o numero da porcentagem carregadavar pct:Number = new Number();//Listener Objectvar listener:Object = new Object();var swfs:Array = new Array();var urls:Array = new Array();var janela:Array = new Array();var camiXML:String = _root["arquivoVC"];//Listener Objectvar listener:Object = new Object();var loaded = arquivo.getBytesLoaded(); var totalL = arquivo.getBytesTotal(); var target_mc:MovieClipLoader = new MovieClipLoader();var target_mc2:MovieClipLoader = new MovieClipLoader();this.createEmptyMovieClip("alvo_mc", 1);this.createEmptyMovieClip("alvo_mc2", 2);System.useCodepage = true; // habilita acentos;var arquivo:XML = new XML();//arquivo.load(camiXML);arquivo.load("images.xml"); arquivo.ignoreWhite = true; // ignora espaços em branco no XMalvo_mc.swapDepths(alvo_mc2);function carrega() { // cria a função "carrega" que mostra o conteúdoif(alvo_mc.getDepth() > alvo_mc2.getDepth() ) { target_mc.loadClip(arquivo.childNodes[0].childNodes[i].attributes.imagem, alvo_mc); alvo_mc.swapDepths(alvo_mc2); } else { target_mc.loadClip(arquivo.childNodes[0].childNodes[i].attributes.imagem, alvo_mc2); }linkUrl() trace(arquivo.childNodes[0].childNodes[i].attributes.imagem); trace(alvo_mc.getDepth())trace("Bytes Carregado " + arquivo.getBytesLoaded())trace("Bytes Total " + arquivo.getBytesTotal()) }function carregaMais() { // a função que conta o tempo para trocar o banner if(i + 1 == total) { var aparece:Tween = new Tween (target_mc, "_alpha", Strong.easeOut, 0, 100, 2.0, true); i=0; } else { var aparece:Tween = new Tween (target_mc, "_alpha", Strong.easeOut, 0, 100, 2.0, true); i++; } carrega();}//Crio a função que ao iniciar o arquivo ele vai carregar os arquivos separadamente.listener.onLoadProgress = function(alvo_mc:MovieClip, alvo2:MovieClip ,loaded:Number, totalL:Number):Void{pct = Math.floor((loaded/totalL)*100);campo = pct+"%";}listener.onLoadInit = function(){if(i < total.length){carrega();}}//Adiciono o listenertarget_mc.addListener(listener);function linkUrl() { link = arquivo.childNodes[0].childNodes[i].attributes.url; tarLink = arquivo.childNodes[0].childNodes[i].attributes.targ; trace(link); trace(tarLink);}link_btn.onRelease = function () { getURL(link, tarLink); }intervalo = setInterval(carregaMais, tempo)arquivo.onLoad = function() { total = arquivo.childNodes[i].childNodes.length; // pegar quantidade de fotos for(var a=0; a < total; a++){ swfs.push(arquivo.childNodes[0].childNodes[a].attributes.imagem); urls.push(arquivo.childNodes[0].childNodes[i].attributes.url); janela.push(arquivo.childNodes[0].childNodes[i].attributes.targ);} carrega();}// Botõesback_btn.onRelease = function() { if(i == 0) { var aparece:Tween = new Tween (target_mc, "_alpha", Strong.easeOut, 0, 100, 2.0, true); i=total-1; } else { var aparece:Tween = new Tween (target_mc, "_alpha", Strong.easeOut, 0, 100, 2.0, true); i--; } carrega(); clearInterval(intervalo) intervalo = setInterval(carregaMais, tempo)}go_btn.onRelease = function() { if(i == total-1) { var aparece:Tween = new Tween (target_mc, "_alpha", Strong.easeOut, 0, 100, 2.0, true); i=0; } else { i++; var aparece:Tween = new Tween (target_mc, "_alpha", Strong.easeOut, 0, 100, 2.0, true); } carrega(); clearInterval(intervalo) intervalo = setInterval(carregaMais, tempo)} Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Julho 22, 2010 Bom pra começar campo deveria ser instancia e não var do campo de texto... e ai você faria campo.text = valor Depois você ta passando 4 valores para o onLoadProgress quando só precisa passar 3... na verdade n precisa é passar nenhum... você pode fazer total = this.getBytesLoaded e this.getBytesTotal() Ao passar os valores e não usar... não faz sentido. E como o listener é 1 só ele tudo que for carregado pelo MovieClipLoader não importa se é 1 MC ou 150... todos vão usar a mesma função de progress Da uma verificada nisso Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Akroma 0 Denunciar post Postado Julho 22, 2010 Agora me perdi toda MAs obrigada pela ajuda aqui.. Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Julho 22, 2010 Sorry te enrolei toda rs Meu código tem um campo mas isso né campo de texto não rs Teria que criar um campo de texto para mostrar a porcentagem... caso contrario ele só fica pra você mesma Então tipo da pra fazer isso aqui: var mc:MovieClip = this.createEmptyMovieClip("mc", 1);var mc2:MovieClip = this.createEmptyMovieClip("mc2", 2);var mcl:MovieClipLoader = new MovieClipLoader();var obj:Object = new Object();mcl.addListener(obj);mcl.loadClip("http://stu004749.files.wordpress.com/2009/03/naruto-shippuden-wallpaper-7.jpg", mc);obj.onLoadProgress = function(alvo:MovieClip, bytesLoaded:Number, bytesTotal:Number):Void{ pct = Math.floor((bytesLoaded/bytesTotal)*100); trace(pct);}obj.onLoadInit = function(alvo:MovieClip){ trace(alvo.getDepth()); if(mc.getDepth() == 1){ mcl.loadClip("http://www.instantz.net/img/banner2.jpg", mc2); mc.swapDepths(mc2); }else { mcl.loadClip("http://stu004749.files.wordpress.com/2009/03/naruto-shippuden-wallpaper-7.jpg", mc); mc2.swapDepths(mc); }}Como pode ver ele vai fica trocando de MC E ai tu aplica ao seu código da maneira que você achar melhor Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Akroma 0 Denunciar post Postado Julho 22, 2010 Aee... funcionou.. só mais uma dúvida e posto o codigo quando estiver certinho Tem como alterar o Deapth de um btn que ja esta no stage? eu tentei o swap.deapth mas não funcionou Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Julho 22, 2010 Olha se você fizer mc.swapDepth(200) ele vai mudar o depth pra 200... Veja o exemplo: var mc:MovieClip = this.createEmptyMovieClip("mc", 1);mc.swapDepths(200);trace(mc.getDepth()); Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Akroma 0 Denunciar post Postado Julho 22, 2010 Aaaa caramba... agora morreu tipo a porcentagem não aparece... ps. eu estou usando igual a seu tutorial Outra coisa depois poderiam mudar o nome do tópico essse assunto pode ser útil a outras pessoas. Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Julho 22, 2010 Seria melhor eu dar esse como resolvido e você cria o novo com suas novas duvidas Eu to respondendo aqui porque você nunca disse que o problema incial foi solucionado... Como assim não mostra a porcentagem???? Tu mudo o depth pra um valor que não existe??? ou sumiu com o clip? rs Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Akroma 0 Denunciar post Postado Julho 22, 2010 rsrs.. desculpa por não ter dado como resolvido. Então ele não esta saindo do zero... ele só troca quando carrega o pro isso esta certo ... mas o campo de texto que coloquei ele não sai do zero. obj.onloadProgress = function(alvo:MovieClip, loaded:Number, totalL:Number):Void{ pct = Math.floor((loaded/totalL)*100); campo = pct+"%" trace(pct+"%") } eu fiz como esta no seu tutorial a primeira vez funcionol mas depois que eu usei o ultimo código que você passou ele não mostra mais, e o trace não retorna a porcentagem. Compartilhar este post Link para o post Compartilhar em outros sites