Ajax WebGame, продолжайте перезагружать карту, не прикручивая другие страницы - PullRequest
2 голосов
/ 26 апреля 2011

Im Создаю веб-игру, и ее интерфейс очень прост и состоит из:

<div>logo</div>
<div id="map"></div>
<div>some buttons here</div>

Бывает, что в div с id = "map" появляется моя карта, но такжедругие разделы игры кажутся слишком похожими на инвентарь.Я использую jQuery для выполнения AJAX, так что это выглядит так:

$(document).ready(function() {$('#map').load('map.php');});

Приведенный выше код загружает div в первый раз, затем, когда я нажимаю кнопку направления, он снова вызывает эту функцию с некоторыми параметрамиигрок может двигаться, но вот в чем проблема, я бы хотел, чтобы карта перезагружалась, пока я на нем.
Я пытался сделать:

setInterval("$(document).ready(function() {$('#mapadiv').load('map.php');});",1000);

, и на самом деле это сработало,но когда я нажал кнопку, которая изменила div и не была на карте (например, инвентарь), он быстро показывает экран инвентаря и снова меняется на карту.
Конечно, это меняется, потому что он продолжает называть карту!поэтому я подумал и попытался поместить этот setInterval в Map.php, чтобы он вызывал только когда он на экране, но это тоже не сработало, он сделал то же самое, что и с первой попытки.Я думаю, что я что-то упустил, кто-нибудь может мне помочь?Заранее спасибо

1 Ответ

1 голос
/ 29 апреля 2011

Я полагаю, у вас также есть следующие кнопки:

   <input type="button" id="btnInventory" />
   <input type="button" id="btnRefreshMap" />

Ваш скрипт должен быть таким:

function loadMap(){
  $('#map').load('map.php');
  $("#map").addClass("keepRefreshingMap");  //This will do the trick
}
function loadInventory(){
  $("#map").load("inventory.php"); //Put your loading inventory code here
  $("#map").removeClass("keepRefreshingMap");  //Remove the class so it doesn't refresh automatically
}
$(document).ready(function() {
   loadMap();
   $("#btnRefreshMap").click(function(){ loadMap(); });
   $("#btnInventory").click(function(){ loadInventory() });
   setInterval(function(){
      if($("#map").hasClass("keepRefreshingMap"))  //Only refresh if it has the class
          loadMap();
   }, 1000);

});

Как видите, уловка в keepRefreshingMap учебный класс.Пока у карты есть, он будет обновляться.Когда вы открываете инвентарь, этот класс удаляется, поэтому карта не обновляется.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...