caumilla 0 Denunciar post Postado Janeiro 8, 2009 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
Public2004 79 Denunciar post Postado Janeiro 8, 2009 Cria uma condição, quando zerar todos os valores, exibe a msg e encerra o contador. Abs. Compartilhar este post Link para o post Compartilhar em outros sites
caumilla 0 Denunciar post Postado Janeiro 8, 2009 ai é que tá não manjo muito tentei coisas do tipo mas não consegui como não tenho muito conhecimento não encontrei o erro... http://forum.imasters.com.br/public/style_emoticons/default/cry.gif Compartilhar este post Link para o post Compartilhar em outros sites
Public2004 79 Denunciar post Postado Janeiro 8, 2009 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
caumilla 0 Denunciar post Postado Janeiro 9, 2009 não fui eu quem criou todo esse códddd!!!!! fui seguindo algumas lógicas mas ali eu parei e não dá certo... http://forum.imasters.com.br/public/style_emoticons/default/upset.gif Compartilhar este post Link para o post Compartilhar em outros sites
GabrielFerrari 41 Denunciar post Postado Janeiro 9, 2009 Ve se te ajuda: http://rapidshare.com/files/181383066/cont...essiva.rar.html Compartilhar este post Link para o post Compartilhar em outros sites
Public2004 79 Denunciar post Postado Janeiro 9, 2009 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
caumilla 0 Denunciar post Postado Janeiro 14, 2009 continua negativo...??? http://forum.imasters.com.br/public/style_emoticons/default/cry.gif :huh: Compartilhar este post Link para o post Compartilhar em outros sites
Public2004 79 Denunciar post Postado Janeiro 14, 2009 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
Thiago de Oliveira Cruz 21 Denunciar post Postado Janeiro 14, 2009 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
Public2004 79 Denunciar post Postado Janeiro 14, 2009 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
Thiago de Oliveira Cruz 21 Denunciar post Postado Janeiro 14, 2009 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
Public2004 79 Denunciar post Postado Janeiro 14, 2009 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
Thiago de Oliveira Cruz 21 Denunciar post Postado Janeiro 14, 2009 Ahhhhh sim Mas é sempre bom pensar em todas as possibilidades não? rs Abraços Espero que caumilla consiga fazer funcionar hehehe :P Compartilhar este post Link para o post Compartilhar em outros sites