Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #11 (permalink)  
Старый 18.09.2015, 10:18
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Сообщение от tomberty
То есть, например, вы поставили в игровое поле карту, у которой СПРАВА число 8, соответственно, она побьёт карту СПРАВА от себя, если у той число СЛЕВА будет меньше 8 (от 1 до 7 ). и так для всех сторон.
не осилил а если карту побили раньше, битва продолжается? и почему сначала слева , а не с той карты которая слабее?
Сообщение от tomberty
Короче полтергейст какой-то блин!!!
так и непонятно что у вас пропадает ... вам бы как-то локализовать проблему
Ответить с цитированием
  #12 (permalink)  
Старый 18.09.2015, 11:00
Новичок на форуме
Отправить личное сообщение для tomberty Посмотреть профиль Найти все сообщения от tomberty
 
Регистрация: 17.09.2015
Сообщений: 9

Еслиб я мог локализовать проблему, я бы это сразу сделал и не писал таки вот мемуары =)).
Проблема возникает после использования сетТаймаута, причём сам метод делает свою работу верно(то есть this тут непричём получается), НО в дальнейшем карта, которая помещается в ячейку, которая фигурировала в сетТаймауте в append становиться недоступна.
Ответить с цитированием
  #13 (permalink)  
Старый 18.09.2015, 12:31
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,112

Сообщение от tomberty
Еслиб я мог локализовать проблему,
давайте попробую за вас
карты User перетащить слева на синее поле и подождать.
вопрос чего не работает - то?
правьте как у вас на самом деле макет -- но не расширяйте без нужды, чтоб не утонуть в коде.
<!DOCTYPE html>
<html>
<head>
  <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  <title>demo</title>
  <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
  <script src="http://code.jquery.com/ui/1.10.3/jquery-ui.js"></script>
  <style type='text/css'>.wrapper{margin:20px auto}
  #User,#Comp,.game-field{border:solid 1px #555555;margin:10px;padding:20px;-moz-border-radius:5px;-webkit-border-radius:5px;float:left;height:335px;min-width:100px}
  .ssComp,.ssUser{cursor:pointer;border:solid 1px #333333;font-weight:bold;margin:10px 0 5px 0;padding:10px;text-align:center;background:#eee;-moz-border-radius:3px;-webkit-border-radius:3px}
  .game-field{padding:0px;width:335px;height:335px;background:#4169E1}
  .ssComp{background:#EE82EE}
  .game-field div{width:40px;height:40px;position:absolute}
  p{margin:0;padding:0}
  .game-field div.zip{margin:50px;padding:5px;width:160px;height:160px;background:#0FF}
  </style>
<script type='text/javascript'>
$(window).load(function () {
    $("#User .ssUser").draggable({
        helper: "clone",
        appendTo: "#trash"
    });

  function shuffle(o){
    for(var j, x, i = o.length; i; j = Math.floor(Math.random() * i), x = o[--i], o[i] = o[j], o[j] = x);
    return o;
  }
  var cards =  shuffle($.makeArray($('.ssComp')));
  $("#Comp").append(cards)

  $('.game-field').droppable({
    activeClass: 'active-th',
    hoverClass: 'hover-th',
    drop: function(event, ui) {
      $card = $(ui.draggable);
      $(this).prepend($card);

      var self = $(this);

      var appendCard = function(arg) {
        var y = $(arg).append(cards.shift()).find('img').css({
          'border': '10px solid #FF0000',
          'width': '150px',
          'height': '150px'
        }).animate({
          'width': '100%',
          'height': '100%'
        });
        var q = $(arg).droppable('disable');
        return y, q;   //кому столь странный return ?
      }

    setTimeout(function(){

    appendCard.call(null, '[data-id='+(self.data('id')+1)+']')}, 2000);
 }

 });


});
</script>
</head>
<body>
      <div class="wrapper">

        <div id="User" class="">
            <p>User</p>
            <div class="ssUser ui-state-default">Блок 1</div>
            <div class="ssUser ui-state-default">Блок 2</div>
            <div class="ssUser ui-state-default">Блок 3</div>
			<div class="ssUser ui-state-default">Блок 4</div>
            <div class="ssUser ui-state-default">Блок 5</div>
            <div class="ssUser ui-state-default">Блок 6</div>
        </div>

        <div id="trash" class="game-field" data-id="1"><div class="zip" data-id="2">сюда упадёт карта Comp</div></div>
       <div id="Comp" class="">
            <p>Comp</p>
            <div class="ssComp ui-state-default">Блок 1</div>
            <div class="ssComp ui-state-default">Блок 2</div>
            <div class="ssComp ui-state-default">Блок 3</div>
			<div class="ssComp ui-state-default">Блок 4</div>
            <div class="ssComp ui-state-default">Блок 5</div>
            <div class="ssComp ui-state-default">Блок 6</div>
        </div>
</div>
</body>
</html>
Ответить с цитированием
  #14 (permalink)  
Старый 19.09.2015, 23:30
Новичок на форуме
Отправить личное сообщение для tomberty Посмотреть профиль Найти все сообщения от tomberty
 
Регистрация: 17.09.2015
Сообщений: 9

Рони, вот это ты крут... взял и замострячил макет за меня ... спасибо!
Вообщем, пытаясь внести правки в твой код описываю проблему, я наконец понял в чём вся загвоздка.
Вся проблема в переменной insertComp, которую я инициализирую и потом постоянно к ней обращаюсь. Т.к. используется метод сетТаймаут, карта ssComp помещается в нужную ячейку спустя какое-то время (в данном случае 2 сек), а переменная инициализируется сразу, когда карты ещё нет в ячейке, и поэтому в переменную записывается undefined. Соответсвенно, вопрос: Как мне инициализировать переменную спустя 3сек? setTimeout в этом случае не работает...
var insertComp = $('[data-id='+(self.data('id')+1)+'] .ssComp')
Ответить с цитированием
  #15 (permalink)  
Старый 19.09.2015, 23:45
Новичок на форуме
Отправить личное сообщение для tomberty Посмотреть профиль Найти все сообщения от tomberty
 
Регистрация: 17.09.2015
Сообщений: 9

Всё, разобрался до конца!!!
setTimeout оказывается работает, только нужно сначала определить переменную за пределами метода, а потом уже в методе setTimeout присвоить ей какое-либо значение.
Рони, спасибо за помощь!!!
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск