Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/368.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/296.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 从循环启动函数,但仅启动一次_Javascript_Php_Ajax_Loops - Fatal编程技术网

Javascript 从循环启动函数,但仅启动一次

Javascript 从循环启动函数,但仅启动一次,javascript,php,ajax,loops,Javascript,Php,Ajax,Loops,好的,我正在为一个4人在线游戏制作一个大厅功能。一切都安排好了,当所有4名玩家加入大厅时,我想开始10秒的倒计时,让玩家点击客户端接受配对。(灵感来自csgo) 我使用ajax调用并刷新php文件中的大厅数据,这样就可以显示大厅中的实时统计信息。 这是一个循环,问题就出现了。我希望在所有4名玩家都加入时调用倒计时函数,如果一名玩家离开,则立即停止倒计时,但当父函数进入循环时(使用javascript中的set interval),它也会重复调用倒计时函数。 尝试过这个,但没有帮助 functio

好的,我正在为一个4人在线游戏制作一个大厅功能。一切都安排好了,当所有4名玩家加入大厅时,我想开始10秒的倒计时,让玩家点击客户端接受配对。(灵感来自csgo) 我使用ajax调用并刷新php文件中的大厅数据,这样就可以显示大厅中的实时统计信息。 这是一个循环,问题就出现了。我希望在所有4名玩家都加入时调用倒计时函数,如果一名玩家离开,则立即停止倒计时,但当父函数进入循环时(使用javascript中的set interval),它也会重复调用倒计时函数。 尝试过这个,但没有帮助

function loadlobbymodule(x){
var spl = x.split(",");
var lid = spl[1];
    $.ajax({
    url: 'inc/fn/lobbyload.php?lid='+ lid,
    success: function(data) {
        var spl = data.split(",");
        var p1 = spl[0];
        var p2 = spl[1];
        var p3 = spl[2];
        var p4 = spl[3];
        var pl = spl[4];
        var pleft = 4 - pl;
        var p1_i = spl[5];
        var p2_i = spl[6];
        var p3_i = spl[7];
        var p4_i = spl[8];
        if(p1!=''){
            $('#slot1').html('<img src="../../img/' + p1_i +'" width="100px" height="100px"><Br><br>' + p1);
        } else{
            $('#slot1').html('');
        }
        if(p2!=''){
            $('#slot2').html('<img src="../../img/' + p2_i +'" width="100px" height="100px"><Br><br>' + p2);
        }else{
            $('#slot2').html('');
        }
        if(p3!=''){
            $('#slot3').html('<img src="../../img/' + p3_i +'" width="100px" height="100px"><Br><br>' + p3);
        }else{
            $('#slot3').html('');
        }
        if(p4!=''){
            $('#slot4').html('<img src="../../img/' + p4_i +'" width="100px" height="100px"><br><br>' + p4);
        }else{
            $('#slot4').html('');
        }
        $('#slotl').html(pleft + ' players left to join.');
        if(pl == 4){
            var accept = 1;
        } else{
            var accept = 0;
        }
        //alert(accept + ' sent');
        accepto(accept);
      }

});
}
function accepto(x){
    //alert(x + ' reached');
    if (x == 1){
        if (!timeleft){
            timeleft = 10;
            var downloadTimer = setInterval(function(){
            timeleft--;
            $('.h3').html('All players joined. Accept in ' + timeleft + ' seconds');
            if(timeleft <= 0)
                clearInterval(downloadTimer);
            },1000);
        }
    } else {
        $('.h3').html('Waiting for players to join');
    }
}setInterval(function(){loadlobbymodule(loll)}, 500);
函数loadlobbymodule(x){
var spl=x.split(“,”);
var lid=spl[1];
$.ajax({
url:'inc/fn/lobbyload.php?lid='+lid,
成功:功能(数据){
var spl=data.split(“,”);
变量p1=spl[0];
var p2=spl[1];
var p3=spl[2];
var p4=spl[3];
var pl=spl[4];
var-pleft=4-pl;
var p1_i=spl[5];
var p2_i=spl[6];
var p3_i=spl[7];
var p4_i=spl[8];
如果(p1!=''){
$('#slot1').html('

'+p1); }否则{ $('#slot1').html(''); } 如果(p2!=''){ $('#slot2').html('

'+p2); }否则{ $('#slot2').html(''); } 如果(p3!=''){ $('#slot3').html('

'+p3); }否则{ $('#slot3').html(''); } 如果(p4!=''){ $('#slot4').html('

'+p4); }否则{ $('#slot4').html(''); } $('slotl').html(pleft+'players left to join'); 如果(pl==4){ var=1; }否则{ var=0; } //警报(接受+‘已发送’); 接受(接受); } }); } 函数接受器(x){ //警报(x+‘已到达’); 如果(x==1){ 如果(!timeleft){ 时间间隔=10; var downloadTimer=setInterval(函数(){ 时间限制--; $('.h3').html('所有玩家加入。在'+timeleft+'秒'内接受');
如果(timeleft将计时器设置为全局,并不断检查活动玩家

window.myGlobalTimer = yourTimer()
listening_PlayerThatLeave : ()=>{
  clearTimeout(myGlobalTimer)
}

listening_AllPlayersIn : ()=>{
  window.myGlobalTimer
}

/* dont keep making a new timeOut everytime , instead use the global var*/
function accepto(x){
    //alert(x + ' reached');
    if (x == 1){
        if (!timeleft){
            timeleft = 10;
//here
            var downloadTimer = setInterval(function(){
            timeleft--;
            $('.h3').html('All players joined. Accept in ' + timeleft + ' seconds');
            if(timeleft <= 0)
                clearInterval(downloadTimer);
            },1000);
        }
    } else {
        $('.h3').html('Waiting for players to join');
    }
}
window.myGlobalTimer=yourTimer()
正在收听播放者离开:()=>{
clearTimeout(myGlobalTimer)
}
倾听所有玩家的声音:()=>{
window.myGlobalTimer
}
/*不要每次都保持新的超时,而是使用全局变量*/
函数接受器(x){
//警报(x+‘已到达’);
如果(x==1){
如果(!timeleft){
时间间隔=10;
//这里
var downloadTimer=setInterval(函数(){
时间限制--;
$('.h3').html('所有玩家加入。在'+timeleft+'秒'内接受');

如果(timeleft)嘿,抱歉这么晚才检查,你能教我如何将其集成到我的代码中吗??