2012-08-17 97 views
1

在我的遊戲中,你必須點擊字母拼寫單詞。當一個字母被點擊時,它會在網格中的單詞所在的區域生成動畫。爲每個字母點擊一次

當我點擊一個字母,它爲單元格創建動畫時,我可以單擊多個單元格。我將如何限制它每個單元只有一個字母。

我在想也許禁用點擊功能,只要動畫需要,但我不知道我會如何實現這一點。

有人能指出我正確的方向嗎?

這裏是click事件...

$('.drag').on('click', function(e) { 
e.preventDefault(); 

var target = $('.drop-box.spellword:not(.occupied):first'); 
var targetPos = target.position(); 
var currentPos = $(this).offset(); 
var b = $(this); 

if (target.length) { 
    $(".minibutton").prop("disabled", true); 
    b.clone().addClass(
    b.data("letter") == target.data("letter") ? "wordglow3" : "wordglow").appendTo("table").css({ 
     background: "transparent", 
     position: "absolute", 
     top: currentPos.top, 
     left: currentPos.left 
    }).animate({ 
     top: targetPos.top, 
     left: targetPos.left 
    }, "slow", function() { 
     $(this).css({ 
      top: 0, 
      left: 0 
     }).appendTo(target); 
     target.addClass("occupied"); 
    }); 
+2

請提供http://jsfiddle.net – pduersteler 2012-08-17 12:15:39

回答

1

看起來你給目標上的類被稱爲「佔領」一旦動畫。一旦單擊一個字母,你能不能給它「佔用」的類?

if (target.length) { 
     target.addClass("occupied"); // add immediately here 
+0

不要假設您可以看看我的另一個問題。它有一個賞金。 stackoverflow.com/questions/11930120/accepting-the-animation @strille – sMilbz 2012-08-17 12:29:27

1

我想你可以移動從動畫回調addClass()方法,因此,如果您單擊兩次,你不會得到相同的細胞,如:

var target = $('.drop-box.spellword:not(.occupied):first').addClass("occupied"); 

這是唯一可行的想法,如果類不會影響你的風格。

另一個方法是先用一個標誌,所以在事件開始時,你會問if(!animating)並設置animating = true在動畫的開頭,並在animating = flase回調。

最後,啓用和禁用click事件,你可以做一個分離的功能與您的代碼像

var clickEventHandler = function(e) { 
    $('.drag').off("click") 
    //your current code 
    $('.drag').on(clickEventHandler); 
} 

$('.drag').on('click', clickEventHandler); 

祝你好運!

+0

不要以爲你可以看看我的另一個問題。它有一個賞金。 http://stackoverflow.com/questions/11930120/accepting-the-animation @Nicosunshine – sMilbz 2012-08-17 12:29:01

0

如果您提供帶有單個ID的字母,您可以在動畫處理過程中通過帶有$('#letterId')。removeAttr('onclick')的jQuery刪除click屬性 - 之後您可以重新激活屬性if必要。

希望這會有所幫助。 Greetz,Lupo

+0

如果點擊事件設置爲jQuery,刪除'onclick'屬性將不會執行任何操作。 – NicoSantangelo 2012-08-17 12:30:58