Ir para conteúdo

POWERED BY:

Arquivado

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

Akroma

[Resolvido] SetInterval + Xml

Recommended Posts

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

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

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

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

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

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

Boa noite pessoas,

 

Bom resolvi usar esse tópico de exemplo Imagem Postada

 

 

É possível colocar um préloader em cada imagem? eu ja procurei procurei e nada Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

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 Imagem Postada

 

Cara, eu adaptei o que você passou mas não sai do zero Imagem Postada

 

 

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 Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

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

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 Imagem Postada

 

 

 

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

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

Sorry te enrolei toda rs

 

Meu código tem um campo mas isso né campo de texto não rs Imagem Postada

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 Imagem Postada

 

E ai tu aplica ao seu código da maneira que você achar melhor Imagem Postada

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aee... funcionou.. só mais uma dúvida e posto o codigo quando estiver certinho Imagem Postada

 

Tem como alterar o Deapth de um btn que ja esta no stage?

 

eu tentei o

 

swap.deapth mas não funcionou Imagem Postada

Compartilhar este post


Link para o post
Compartilhar em outros sites

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());
Imagem Postada

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aaaa caramba... agora morreu tipo a porcentagem não aparece... Imagem Postada

 

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

Seria melhor eu dar esse como resolvido e você cria o novo com suas novas duvidas Imagem Postada

 

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

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

×

Informação importante

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