これにアプローチする 1 つの方法は、ドロップされた要素が有効な正方形に配置されたかどうかを格納することです。これは、無効な正方形に移動したときに、以前に有効な正方形にあったかどうかを確認し、そうである場合はスコアを 1 減らすことができることを意味します。
これが明確であることを願っています!
ライブ デモについては、http://jsfiddle.net/pET3y/を参照してください。
関連コード:
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);
}
}
注:フィドルにはalert(ui.draggable.data("valid"));
デバッグのアラートがあります
--
オンドラッグに変更するとスコアが下がる
ここで行うことは、ドラッグイベント ( と呼ばれる)をリッスンし、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);
}
}