Yumi 0 Denunciar post Postado Agosto 27, 2009 Boa Tarde Pessoal! Após muitas pesquisas, achei um código de contagem regressiva a partir de uma data! Porém ele está pegando o horário do pc cliente, mesmo quando jogo no servidor! http://forum.imasters.com.br/public/style_emoticons/default/no.gif Alguém poderia me explicar como faço pra que use o horário do servidor? Segue o código: this.onEnterFrame = function(){ var today:Date = new Date(); var currentYear = today.getFullYear(); var currentTime = today.getTime(); var targetDate:Date = new Date(2009,9,28); var targetTime = targetDate.getTime(); var timeLeft = targetTime - currentTime; var sec = Math.floor(timeLeft/1000); var min = Math.floor(sec/60); var hrs = Math.floor(min/60); var days = Math.floor(hrs/24); sec = string(sec % 60); if(sec.length < 2) { sec = "0" + sec; } min = string(min % 60); if(min.length < 2) { min = "0" + min; } hrs = string(hrs % 24); if(hrs.length < 2) { hrs = "0" + hrs; } days = string(days); var counter: String = days + ":" + hrs + ":" + min + ":" + sec; time_txt.text = counter; } *PS.: sou nova na área! Desde já, agradeço! :* Adriana Yumi Compartilhar este post Link para o post Compartilhar em outros sites
carneirinho 7 Denunciar post Postado Agosto 27, 2009 O flash até onde sei ele não pega o horário do servidor, seria melhor você usar php pra pegar a data do servidor por um post ou flashvar, você pode criar um arquivo horario.php e colocar o seguinte código: <? echo "&date=".date("G:H:s")."&"; ?> No flash pra restagar o horário você usaria: var carrega:LoadVars = new LoadVars(); carrega.load("horario.php"); carrega.onLoad = function(){ trace(this.date); } E a partir do horário do php você fazer seu script funcionar, mas seria melhor você usar um setInterval no lugar do onEnterFrame que está usando, pois ele faz várias requisições de data, quando na verdade você só precisa de uma inicial, o php tem outros formatos de data pra você usar, pode ver a lista no site http://es2.php.net/manual/pt_BR/function.date.php e seu php precisa estar num servidor apache local ou hospedado no seu site pra ele funcionar. Boa Tarde Pessoal! Após muitas pesquisas, achei um código de contagem regressiva a partir de uma data! Porém ele está pegando o horário do pc cliente, mesmo quando jogo no servidor! http://forum.imasters.com.br/public/style_emoticons/default/no.gif Alguém poderia me explicar como faço pra que use o horário do servidor? Segue o código: this.onEnterFrame = function(){ var today:Date = new Date(); var currentYear = today.getFullYear(); var currentTime = today.getTime(); var targetDate:Date = new Date(2009,9,28); var targetTime = targetDate.getTime(); var timeLeft = targetTime - currentTime; var sec = Math.floor(timeLeft/1000); var min = Math.floor(sec/60); var hrs = Math.floor(min/60); var days = Math.floor(hrs/24); sec = string(sec % 60); if(sec.length < 2) { sec = "0" + sec; } min = string(min % 60); if(min.length < 2) { min = "0" + min; } hrs = string(hrs % 24); if(hrs.length < 2) { hrs = "0" + hrs; } days = string(days); var counter: String = days + ":" + hrs + ":" + min + ":" + sec; time_txt.text = counter; } *PS.: sou nova na área! Desde já, agradeço! :* Adriana Yumi Compartilhar este post Link para o post Compartilhar em outros sites
Yumi 0 Denunciar post Postado Agosto 27, 2009 O flash até onde sei ele não pega o horário do servidor, seria melhor você usar php pra pegar a data do servidor por um post ou flashvar, você pode criar um arquivo horario.php e colocar o seguinte código: <? echo "&date=".date("G:H:s")."&"; ?> No flash pra restagar o horário você usaria: var carrega:LoadVars = new LoadVars(); carrega.load("horario.php"); carrega.onLoad = function(){ trace(this.date); } E a partir do horário do php você fazer seu script funcionar, mas seria melhor você usar um setInterval no lugar do onEnterFrame que está usando, pois ele faz várias requisições de data, quando na verdade você só precisa de uma inicial, o php tem outros formatos de data pra você usar, pode ver a lista no site http://es2.php.net/manual/pt_BR/function.date.php e seu php precisa estar num servidor apache local ou hospedado no seu site pra ele funcionar. esse código, eu coloco antes ou depois da função this.onEnterFrame = function() ? E se eu substituir por setInterval ele não funciona, por acaso se eu mudar para setInterval vou ter que modificar o resto do código? Desde já Obrigada! :* Adriana Yumi Compartilhar este post Link para o post Compartilhar em outros sites
Andre Cocuroci 0 Denunciar post Postado Agosto 28, 2009 Eu uso esse código: PHP: //pegando dia, mes, ano, hora, minuto e segundo do servidor $dia = date("d"); $mes = date("m"); $ano = date("Y"); $hora = date("H"); $minuto = date("i"); $segundo = date("s"); //passando dia, mes, ano, hora, minuto e segundo do tempo final $anoF = 2008; $mesF = 10; $diaF = 27; $horaF = 9; $minutoF = 0; $segundoF = 0; //passando tudo isso para o flash print '&dia='.$dia.'&mes='.$mes.'&ano='.$ano.'&hora='.$hora.'&minuto='.$minuto.'&segundo='.$segundo.'&diaF='.$diaF.'&mesF='.$mesF.'&anoF='.$anoF.'&horaF='.$horaF.'&minutoF='.$minutoF.'&segundoF='.$segundoF; AS: //lendo arquivo externo - pegando horário do servidor var my_lv:LoadVars = new LoadVars(); my_lv.onLoad = function(success:Boolean) { if (success) { trace("text file successfully loaded"); dataInicial = new Date(this.ano, this.mes-1, this.dia, this.hora, this.minuto, this.segundo); dataFinal = new Date(this.anoF, this.mesF-1, this.diaF, this.horaF, this.minutoF, this.segundoF); var atualiza = setInterval (_root.atualizaHora, 1000); } }; function atualizaHora() { //Aumentando em 1 segundo a hora diff = dataInicial.setTime(dataInicial.getTime() + 1000); goSeg = Math.floor((dataFinal-diff)/1000); seg = goSeg%60; goMin = Math.floor(goSeg/60); min = goMin%60; goHoras = Math.floor(goMin/60); horas = goHoras; if (seg<10) { seg = "0"+seg; } if (min<10) { min = "0"+min; } if (horas<10) { horas = "0"+horas; } if ((dataFinal-diff) <= 0) { _root.contagem.text = "00:00:00"; } else { _root.contagem.text = horas+":"+min+":"+seg; } } my_lv.load("horario.php?T="+getTimer()+"&R="+random(9999)); Compartilhar este post Link para o post Compartilhar em outros sites
Yumi 0 Denunciar post Postado Agosto 28, 2009 Então, eu achei um outro aqui que utiliza o horário do servidor. :rolleyes: MAS, quando eu coloco o .swf no servidor, e puxo ele em um arquivo .php ele não mostra o contagem, PORÉM se eu chamo o diretório onde ele tá no servidor, ele funciona normal! O que pode estar acontecendo? Esse é no .swf: stop(); // Date( year, month-1, date [, hour [, minute [, second [, millisecond]]]]) eventDate = new Date(2009, 7, 30); eventMillisecs = eventDate.getTime(); countdown = function(){ var currentMillisecs = server.time + getTimer(); this.msecs = eventMillisecs - currentMillisecs; if (this.msecs <= 0) { play(); return; } this.secs = Math.floor(this.msecs/1000); // 1000 milliseconds make a second this.mins = Math.floor(this.secs/60); // 60 seconds make a minute this.hours = Math.floor(this.mins/60); // 60 minutes make a hour this.days = Math.floor(this.hours/24); // 24 hours make a second this.msecs = string(this.msecs % 1000); this.secs = string(this.secs % 60); this.mins = string(this.mins % 60); this.hours = string(this.hours % 24); this.days = string(this.days); while (this.msecs.length < 3) this.msecs = "0" + this.msecs; if (this.secs.length < 2) this.secs = "0" + this.secs; if (this.mins.length < 2) this.mins = "0" + this.mins; if (this.hours.length < 2) this.hours = "0" + this.hours; while (this.days.length < 3) this.days = "0" + this.days; for(movie in this){ if (this[movie]._parent == this) this[movie].evaluateFrameFrom(this); } }; MovieClip.prototype.evaluateFrameFrom = function(variableClip) { var nameArray = this._name.split("_"); var numberSet = variableClip[nameArray[0]]; var character = number(nameArray[1]); var frame = 1 + number(numberSet.charAt(character)); if (this._currentframe != frame) this.gotoAndStop(frame); }; server = new LoadVars(); server.onLoad = function(ok){ if (!ok) return trace("Server error! Unable to obtain date from server"); counter.onEnterFrame = countdown; counter._visible = true; this.time = Number(this.time)*1000 - getTimer(); }; server.load("gettime.php"); counter._visible = false; e eu tô chamando no .php desse modo: <tr> <td><br /><script type="text/javascript"> AC_FL_RunContent( 'codebase','http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0','width','170','height','181','title','NABOA','src','http://www.meusiteaqui.com.br/servercountdown','bgcolor','#E0DFE3','quality','high','pluginspage','http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash','movie','http://www.meusiteaqui.com.br/servercountdown' ); //end AC code </script> <noscript><object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=9,0,28,0" width="170" height="181" title="NABOA"> <param name="movie" value="http://www.meusiteaqui.com.br/servercountdown.swf" /> <param name="quality" value="high" /> <embed src="http://www.meusiteaqui.com.br/servercountdown.swf" width="170" height="181" quality="high" pluginspage="http://www.adobe.com/shockwave/download/download.cgi?P1_Prod_Version=ShockwaveFlash" type="application/x-shockwave-flash"></embed> </object></noscript></td> </tr> Desde já Agradeço! Adriana Yumi :* Compartilhar este post Link para o post Compartilhar em outros sites
Andre Cocuroci 0 Denunciar post Postado Agosto 28, 2009 Ele não deve estar achando o arquivo php. O swf estão na mesma pasta? Compartilhar este post Link para o post Compartilhar em outros sites
Yumi 0 Denunciar post Postado Agosto 28, 2009 Ele não deve estar achando o arquivo php. O swf estão na mesma pasta? Bem não entendi muito bem a sua pergunta.. Mas, o php que puxa o flash não estão na mesma pasta :/ estão na mesma pasta o gettime.php (onde pega a data do servidor) e o .swf Adriana Yumi :* Compartilhar este post Link para o post Compartilhar em outros sites
Andre Cocuroci 0 Denunciar post Postado Agosto 28, 2009 Opa, eu escrevi errado mesmo. Faz assim, mostre como está a disposição dos arquivos no servidor. Compartilhar este post Link para o post Compartilhar em outros sites
Thiago de Oliveira Cruz 21 Denunciar post Postado Agosto 29, 2009 Se o php que puxa o flash... não está na mesma pasta que ele Logo quando ele abrir o flash... o flash vai estar aberto em outro diretorio...... Exemplo: www.site.com.br/index.php //Aqui eu chamo o arquivo flash www.site.com.br/swf/arquivo.swf //Aqui é onde está meu arquivo flash Se eu chamar o swf no index o swf automaticamente vai estar voltando uma pasta... ou seja ele não vai encontrar nenhum arquivo que você não de o caminho para ele... mesmo se o arquivo estiver na pasta de origem do seu swf... Pois quando você carrega ele em outro lugar ele deixa de estar lá para estar no lugar onde foi carregado... mesmo que fisicamente ele continue no mesmo caminho fisico... (se assim você me entende) Então para ele procurar coisas dentro do servidor tem que buscar por valores absolutos nesse código aqui: server.load("gettime.php"); Você tem que colocar o caminho todo dele Exemplo server.load("http://www.site.com.br/swf/gettime.php"); Pois assim o flash vai conseguir localizar onde se encontra o arquivo... Não sei se fui muito explicativo ou educativo... quanto a minha resposta... Mas o fato é que ele precisa do caminho absoluto ;) Abraços Compartilhar este post Link para o post Compartilhar em outros sites
Yumi 0 Denunciar post Postado Agosto 31, 2009 Se o php que puxa o flash... não está na mesma pasta que ele Logo quando ele abrir o flash... o flash vai estar aberto em outro diretorio...... Exemplo: www.site.com.br/index.php //Aqui eu chamo o arquivo flash www.site.com.br/swf/arquivo.swf //Aqui é onde está meu arquivo flash Se eu chamar o swf no index o swf automaticamente vai estar voltando uma pasta... ou seja ele não vai encontrar nenhum arquivo que você não de o caminho para ele... mesmo se o arquivo estiver na pasta de origem do seu swf... Pois quando você carrega ele em outro lugar ele deixa de estar lá para estar no lugar onde foi carregado... mesmo que fisicamente ele continue no mesmo caminho fisico... (se assim você me entende) Então para ele procurar coisas dentro do servidor tem que buscar por valores absolutos nesse código aqui: server.load("gettime.php"); Você tem que colocar o caminho todo dele Exemplo server.load("http://www.site.com.br/swf/gettime.php"); Pois assim o flash vai conseguir localizar onde se encontra o arquivo... Não sei se fui muito explicativo ou educativo... quanto a minha resposta... Mas o fato é que ele precisa do caminho absoluto ;) Abraços Bom Dia! MUITO OBRIGADA pela dica! Coloquei o caminho do 'gettime.php' e deu certo! http://forum.imasters.com.br/public/style_emoticons/default/joia.gif Agradeço a todos que me ajudaram a solucionar o problema! ^^ Att. Adriana Yumi :* Compartilhar este post Link para o post Compartilhar em outros sites