2012-06-22 27 views
0

因此,這裏是我的蛇腳本 -蛇腳本不將值傳遞給變量

http://jsfiddle.net/6bKHc/24/

我開始創建一個蛇遊戲,但基本上移動(上圖),移動(底部)E.C.不管用。任何想法爲什麼?我明白我不能將這些元素傳遞給像這樣的變量,所以也許你可以告訴我如何正確地做到這一點?

+0

首先,沒有CSS屬性叫'value'。對於另一個jQuery的'position()'方法不會返回一個數字,而是一個對象。該對象的「left」和「right」屬性是表示所討論的HTML元素的x和y座標的數字。 – slebetman

+0

嗯,我明白了,但我需要通過move(top),move(bottom)e.c. – y2ok

回答

0

好清理的語法和拍了一下錯誤這應該讓你開始

$(document).keydown(function(event){ 
    var move, inter; 
    inter = setInterval(move = function() { 
     var dir = $(".snake").data('dir'); 
     var snake = $('.snake'); 

     if(dir == 'top') { 
      snake.stop().animate({"top": "+=5px"}); 
     } 
     if(dir == 'bottom') { 
      snake.stop().animate({"top": "-=5px"}); 
     } 
     if(dir == 'left') { 
      snake.stop().animate({"left": "+=5px"}); 
     } 
     if(dir == 'right') { 
      snake.stop().animate({"top": "-=5px"}); 
     } 
    }, 500); 
    if(event.which == 40) { 
     $(".snake").data('dir','top'); 
    } else if(event.which == 39) { 
     $(".snake").data('dir','left');   
    } else if(event.which == 37) { 
     $(".snake").data('dir','right');   
    } else if(event.which == 38) { 
     $(".snake").data('dir','bottom');  
    }; });​ 

fiddle

夫婦明顯增加,使:

  • 邊界檢查
  • 平滑的動畫。
+0

乾杯!工作;)! – y2ok

0

要使其工作,你將不得不moodify代碼就像如下:

$(document).keydown(function() { 
    var inter; 
    return function(event) { 
     var move, prevDirection; 
     clearInterval(inter); 
     inter = setInterval(move = function(direction) { 
      var value, prop; 
      switch (direction || prevDirection) { 
      case "top": 
       prop = "top"; 
       value = -5; 
       break; 
      case "bottom": 
       prop = "top"; 
       value = 5; 
       break; 
      case "left": 
       prop = "left"; 
       value = -5; 
       break; 
      case "right": 
       prop = "left"; 
       value = 5; 
       break; 
      } 
      if (direction) prevDirection = direction; 
      $(".snake").css(prop, $(".snake").position()[prop] + value); 

     }, 500); 
     if (event.which == 40) { 
      move('bottom'); 
     } else if (event.which == 39) { 
      move('right'); 
     } else if (event.which == 37) { 
      move('left'); 
     } else if (event.which == 38) { 
      move('top') 
     }; 
    } 
}());​ 
    ​ 

http://jsfiddle.net/6bKHc/42/

+0

http://jsfiddle.net/6bKHc/29/仍然沒有找到,請檢查。我需要這個,當你按下箭頭,向左箭頭,向右箭頭,向上箭頭,綠色圓點將開始向方向移動+ 5px。 – y2ok

+0

@ user1446087,我還沒有修復您的遊戲,我修復了JavaScript錯誤,以便您可以繼續前進。我也沒有更新小提琴,修改後的代碼是在這個答案 – epoch

+0

'css({.snake「).position()。value + 5 +」px「 }); '沒有任何意義:| – Esailija