Ir para conteúdo

POWERED BY:

Arquivado

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

caumilla

Contador Regressivo

Recommended Posts

Estou tentando fazer um contador para colocar num site

 

Faltam --dias e -- horas para acabar esta promoção.

 

O problema é que a contagem continua negativa, o que preciso

é que entre a mensagem: "Promoção Encerrada!".

 

O código que estou usando é este:

 

var nextDepth:Number = this.getNextHighestDepth();

var x:Number = Stage.width/2-120;

var y:Number = Stage.height/2-30;

var contagem:TextField = this.createTextField("contagem", nextDepth, x, y, 0, 0);

 

var ano:Number = 2008;

var mes:Number = 11;

var dia:Number = 30;

var data1:Date = new Date(ano, mes-1, dia);

contagem.autoSize = true;

contagem.selectable = false;

contagem.textColor= 0xFF9900;

 

function contagemRegressiva(Void):Void {

data2 = new Date();

difSeg = Math.floor((data1-data2)/1000);

seg = difSeg%60;

difMin = Math.floor(difSeg/60);

min = difMin%60;

difHoras = Math.floor(difMin/60);

horas = difHoras%24;

dias = Math.floor(difHoras/24);

if (seg<10) {

seg = "0"+seg;

}

if (min<10) {

min = "0"+min;

}

if (horas<10) {

horas = "0"+horas;

}

 

contagem.text = "Faltam "+dias+ " dias e"+newline;

contagem.text += +horas+":"+min+":"+seg+" horas";

contagem.setTextFormat(setEstilo());

}

_root.onEnterFrame = function(Void):Void {

contagemRegressiva();

};

 

function setEstilo(Void):TextFormat {

var estilo:TextFormat = new TextFormat();

estilo.font = "Arial Narrow";

estilo.size = 30;

estilo.bold = true;

estilo.align = left;

return (estilo);

}

 

Thanks!!!! http://forum.imasters.com.br/public/style_emoticons/default/yay.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se não tem muito conhecimento, como é que criou esse cód. todo?

Não tem erro no cód., só não tem a instrução para executar algo quando zerar...

O cód. que postou já possui algumas condições, basta seguir a mesma lógica trabalhando com as variáveis já definidas, e verificar se as mesmas estão com o valor "0".

 

Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Tá na mão, é só alterar o trecho do seu cód. conforme abaixo:

_root.onEnterFrame = function(Void):Void  {
	contagemRegressiva();
	if(dias==0 and horas==0 and min==0 and seg==0){
		trace("zerou")
		delete onEnterFrame;
		contagem.text = "Promoção Encerrada!";
		contagem.setTextFormat(setEstilo());
	}
};

Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Se você alterou o trecho do cód. como citei, não vai ficar nada negativo, porque quando os valores das variáveis forem "0", vai encerrar o contador e alterar o conteúdo da sua cx. de texto para a nova msg.

Outro coisa, para testar, altere os valores das variáveis "ano", "mes" e "dia", porque se deixar com a data do ano passado não vai funcionar mesmo.

 

Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Public... como ela colocou seg < 10 para acrecentar o 0 na frnete bug e fica 0-18 ai nunca o numero fica negativo ;)

 

Então pra concertar faz esse código aqui

var nextDepth:Number = this.getNextHighestDepth();
var x:Number = Stage.width/2-120;
var y:Number = Stage.height/2-30;
var contagem:TextField = this.createTextField("contagem", nextDepth, x, y, 0, 0);

var ano:Number = 2008;
var mes:Number = 11;
var dia:Number = 30;
var data1:Date = new Date(ano, mes-1, dia);
contagem.autoSize = true;
contagem.selectable = false;
contagem.textColor= 0xFF9900;

function contagemRegressiva(Void):Void {
data2 = new Date();
difSeg = Math.floor((data1-data2)/1000);
seg = difSeg%60;
difMin = Math.floor(difSeg/60);
min = difMin%60;
difHoras = Math.floor(difMin/60);
horas = difHoras%24;
dias = Math.floor(difHoras/24);
if (seg<10 and seg > -1) {
seg = "0"+seg;
}
if (min<10 and min > -1) {
min = "0"+min;
}
if (horas<10 and horas > -1) {
horas = "0"+horas;
}

contagem.text = "Faltam "+dias+ " dias e"+newline;
contagem.text += +horas+":"+min+":"+seg+" horas";
contagem.setTextFormat(setEstilo());
}
_root.onEnterFrame = function(Void):Void {
	contagemRegressiva();
	trace(horas);
	if(dias < 0 and horas < 0 and min < 0 and seg < 0){
		trace("zerou")
		delete onEnterFrame;
		contagem.text = "Promoção Encerrada!";
		contagem.setTextFormat(setEstilo());
	}
};

function setEstilo(Void):TextFormat {
var estilo:TextFormat = new TextFormat();
estilo.font = "Arial Narrow";
estilo.size = 30;
estilo.bold = true;
estilo.align = left;
return (estilo);
}

Só modifiquei seus ifs

De:

if(dias == 0 and horas == 0 and min == 0 and seg == 0)

 

Para:

if(dias < 0 and horas < 0 and min < 0 and seg < 0)

 

De:

if (seg<10) {

seg = "0"+seg;

}

if (min<10) {

min = "0"+min;

}

if (horas<10) {

horas = "0"+horas;

}

 

Para:

if (seg<10 and seg > -1) {

seg = "0"+seg;

}

if (min<10 and min > -1) {

min = "0"+min;

}

if (horas<10 and horas > -1) {

horas = "0"+horas;

}

 

Abraços

Compartilhar este post


Link para o post
Compartilhar em outros sites

Olá berseck, fiquei curioso agora, pois testei da primeira vez e acabei de repetir o teste novamente e funcionou Ok.

Não entendi esse "bug" que você citou... pois as variáveis são do tipo numérica, então se valor = 0 ou valor = 00000000 o resultado é o mesmo = 0

 

Perfect!

 

Abs.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Public2004

 

Sem usar as suas funções

 

De um trace em seg, min, e hora

 

Você vai ver que vai ficar 0-seg, 0-min, 0-hora... ou seja vai bugar pq ela mandou no código qualquer numero que seja menor que 10 acrecentar o 0 se o contador começa-se do positivo e fosse decrescendo automanticamente eternamente em qualquer computador, iria com a sua função ao dar 0 em tudo dizer que encerrou...

 

MAAAAASSSSSS

 

Acontece que com os valores setados ali em cima, a função numerica chamada se for chamada por qualquer computador depoisss que ficou negativa ele vai acrescentar 0 + a variavel com o valor negativo dela

 

logo por exemplo já se passaram 12 horas 23 minutos e 30 segundos de quando acabou

 

ficaria assim

 

0-12 horas 0-23 minutos 0-30 segundos... ou seja o 0 que ela colocou na frente bugaria a função... pois ele foi acrecentado como uma string na frente do objeto não como um numero propriamente dito.

 

por isso tem de dizer que se ele for > -1 ele não vai colocar o zero assim vai evitar esse bug... que não é bug é uma função logica que faz o sistema do flash funcionar...

 

Se quiser testa ai com de tal maneira q já tenha acabado... ou só com o código dela sem alterar as datas... e vai ver que vai ficar negativo...

 

Testei utilizando CS3... talvez outras versões evitem tal problema, mas quando testei mostrou esse erro ;)

 

Abraços

berseck

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ah sim, caso a data/hora seja anterior a atual tem esse problema, mas não me preocupei com isso, pois a finalidade do código é que quando zerar, encerra o contador e muda a msg, não vai mostrar negativo, porque já encerrou a função.

Pois pelo que entendi do colega, o script iniciará sempre com uma data a frente e não com uma que já passou.

 

Perfect!

 

Abs.

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.