2012-08-16 4 views
1

최근에 젊은 사용자가 쉽게 드래그 앤 드롭 게임을 변경했습니다.애니메이션 된 속성 복제

기본적으로 단어를 드래그 앤 드롭하여 단어를 철자하는 대신 문자를 클릭하면 올바른 영역으로 자동으로 움직입니다.

내 문제는 드래그 앤 드롭 기능을 사용하여 글자가 복제되어 게임에서 각 항목을 두 번 이상 사용할 수있는 경우입니다. 지금 그들은 그렇지 않습니다.

끌어서 놓기 이벤트 이외의 다른 방법이 있습니까?

$ (e.target) .clone : 수동으로 다음을 사용하여 요소를 복제 할 수

$('.drag').draggable({ 
    helper: 'clone' 
}); 

답변

1

당신은 클론 요소를 clone()animate() 수 있습니다

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"); 
    }); 
} 

(보조 노트로서, 당신은 이미 부모가있는 경우 요소가 이동하므로, appendTo() 전에 remove()를 호출 할 필요가 없습니다.)

+0

그들이 복제 할 때 그들은 그리드로가는 것들로부터 CSS를 가져와 어떻게 이것을 막을 수 있습니까? 이 바이올린은 내가 무엇을 의미하는지 보여줄 것입니다. http://jsfiddle.net/smilburn/3qaGK/8/ @ Frédéric Hamidi – sMilbz

+0

당신의 코멘트를 정확하게 이해한다면, 아마도'wordglow'와'workglow3' 클래스를 복제본에 추가해야 할 것입니다 원래 요소 대신. –

+0

코드의 해당 부분에서 두 스타일을 구분하는 방법은 무엇입니까? @ Frédéric Hamidi – sMilbz

0

이 내가 드래그 사용과 기능을 삭제할 것입니다

$('.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) { 


    if(b.attr("data-letter") == target.attr("data-letter")){ 
     $(this).addClass('wordglow3').css('color', 'white'); 
      $('.minibutton').prop('disabled', true); 
     } else { 
      $(this).addClass('wordglow'); 
      $('.minibutton').prop('disabled', true); 
    } 


     b.remove().appendTo('table').css({ 
     'position' : 'absolute', 
     'top' : currentPos.top, 
     'left': currentPos.left 
     }); 
     { 
     b.animate({ 
      top : targetPos.top, 
      left : targetPos.left 
     }, 'slow', function() { 
      b.remove().css({ top: 0, left: 0 }).appendTo(target); 
      target.addClass('occupied'); 
     }); 
     } 
    } 
}); 

...() .after (e.target);

+0

어디에서 기능을 넣을 수 있습니까? @phunder – sMilbz

+0

원래 요소를 드래그하기 시작할 때 추가합니다. – phunder

관련 문제