サッカーのブラウザゲームを作っていますが、カウンターがあります。カウンターが0に達するたびに(10分から)、キックしてゴールを決めることができます。タブを変更したり、同じページに長く留まったりすると(更新したり、サイトの他のページに移動したりせずに)、カウンターがフリーズ/停止します。他のタブから戻った場合(ゲームタブに戻った場合)、カウンターはフリーズ解除されます(ただし、バグが発生し、「間違った時間」、つまりゲームタブにいないときに一時停止された時間から継続します) 。
基本的にはそれだけです。私が欲しいのは、別のタブを閲覧しているとき(またはページを更新しない場合)でもカウンターが機能することです。
私のコードは次のとおりです。
<?php
ob_start();
$Atempo_permitido = 600; // tempo em segundos até redirecionar
$Atempo_atual = mktime(date("H:i:s"));
if($_COOKIE['ACookie_countdown']=="") {
$Atempo_entrada = mktime(date("H:i:s"));
$Atempo_cookie = '3600'; // em segundos
setcookie("ACookie_countdown", "$Atempo_entrada", time()+86400*365);
} else {
$Atempo_gravado = $_COOKIE['ACookie_countdown'];
$Atempo_gerado = $Atempo_atual-$Atempo_gravado;
$Afim = $Atempo_permitido-$Atempo_gerado;
if($Afim <= 0) {
echo "tempo esgotado";
} else {
//echo $fim;
}
}
?>
<script language="Javascript" type="text/javascript">
var Asegs = '<?php if($Afim=="") { echo $Atempo_permitido+1; } else { echo "$Afim"; } ?>';
var Ats = Asegs*10;
Atuw1();
function Atuw1(){
Asegs = parseInt(Ats / 10);
Asegs = Asegs % 3600;
Aminutes = parseInt(Asegs / 60);
Asegs = Asegs % 60;
if(Ats>0){
document.getElementById("Avalor").innerHTML = "Tempo restante: " + "00" + ":<?php if($Afim <=540){echo "0";}?>" + Aminutes + ":" + Asegs + "h";
Ats = Ats-1;
setTimeout("Atuw1()", 100)
} else {
document.getElementById("Adiv1").innerHTML = 'Você já pode chutar!';
location.href='index.php?menu=gol';
}
}
</script>
<!-- BLOCO 1 //-->
<body onLoad="Atuw1();Btuw1();Ctuw1();Dtuw1();Etuw1();">
<div id="Avalor"></div>
<div id="Adiv1"></div>
あなたたちがこれを機能させる方法について私にいくつかの光を示すことができれば。