2012-09-05 17 views
2

我在教自己的javascript/jquery,並決定作爲一個副項目來創建拖放遊戲。我已經將它建立在我找到的其他教程上,並且只是適應了它,所以在代碼上輕鬆一下 - 希望它不太可怕。拖放 - 檢查項目被扔在正確的地方

我正在使用jquery ui dropable庫來實現遊戲,目前我檢查一次該項目是否被放棄,如果它是在正確的地方,如果它是我增加了一個分數。

但是我遇到的問題是,當物品放在錯誤的地方時,我無法將分數降低一分。

如果一個正方形放在正確的佔位符上,它會給分數加1,但如果同一個正方形從正確的佔位符中移除,那麼它需要取得1分。

繼承人這裏是我到目前爲止 http://creativelabel.co.uk/drag-and-drop/

做任何想法演示?

回答

1

解決這個問題的一種方法是在被丟棄的元素中存儲它是否被放置在有效的正方形中。這意味着當它移動到一個無效的正方形時,你可以檢查它是否以前是有效的,如果是這種情況,則將得分減1。

希望這是明確的!

更改爲 - 的小提琴有警報alert(ui.draggable.data("valid"));調試

if (slotNumber == imgNumber) { 
    ui.draggable.addClass('img-match'); 
    ui.draggable.data("valid", true); 

    imgMatch++; 
    } else { 
     if(ui.draggable.data("valid")) { 
     imgMatch--; 
     ui.draggable.data("valid", false); 
     } 
    } 

注:

了現場演示

相關代碼見http://jsfiddle.net/pET3y/拖動比分下降

你現在正在做的是聽拖動事件(稱爲activate),當這被稱爲運行一個函數。該函數檢查被拖動的元素是否先前處於正確的位置,如果是,則將其標記爲不在正確的位置並降低分數。

參見:http://jsfiddle.net/3NkwJ/1/

 drop: handleDropEvent, 
     activate: handleDragEvent //add new event 
}); 

並添加如下:

function handleDragEvent(event, ui) { 
    if(ui.draggable.data("valid")) { 
      imgMatch--; 
      $('input[name=Score]').val(imgMatch); 
      $('#score h1').text(imgMatch); 
      ui.draggable.data("valid", false); 
    }  
    } 
+0

如果我將這個物品拖到另一個方格上,那麼這種方法是有效的,是否有辦法讓它在拖動時立即移除分數? 所以,如果放下是正確的,那就增加得分,但只要它再次拿起它就會消除分數。 – ShambalaG

+0

查看上面加入的新代碼 –

+0

不錯的一個,工作過。直到現在我還沒有遇到激活事件。我正在尋找解決方案,但沒有運氣。謝謝你的幫助。 – ShambalaG

0

我只脫脂的代碼,但此塊之後

if (slotNumber == imgNumber) { 
    ui.draggable.addClass('img-match'); 
    imgMatch++; 
} 

可你只需要添加一個else語句

else 
    imgMatch--; 
+0

一個else語句不起作用,如果你把它放在一個無效的地方5次得分是-5,但它應該是0. –

+0

啊我看,你的回答覆蓋了一切都好多了 –