Ir para conteúdo

POWERED BY:

Arquivado

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

Yumi

[Resolvido] Problema com Horário Contagem Regressiva

Recommended Posts

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

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

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

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

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

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

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

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

×

Informação importante

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