1

私のスペリング ゲームでは、単語が完成するとグリッド内で消えていきます。一定量の単語 (この場合は 3 つ) が完了すると、グリッド全体がフェードアウトして背後の画像が表示されます。現時点での問題は、3 番目の単語を完成させても、マウスをもう一度クリックするまで何も起こらないことです。

その単語が完了するとすぐに、マウスをクリックせずにスクリプトが実行されるようにする必要があります。

フェードアウトをトリガーするコードは次のとおりです...

$('.drag').on('click', function(e) {
e.preventDefault();
if(animation) return;
animation = true;
setTimeout(function(){animation = false;},500);
var target = $('.drop-box.spellword:not(.occupied):first');
var targetPos = target.position();
var currentPos = $(this).offset();
var b = $(this);

if (target.length) {
    target.addClass("occupied");
    $(".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);
        if (!$('.drop-box.spellword:not(.occupied)').length) {
            var wordIsCorrect = 0;
            $('.drop-box.spellword').each(function() {
                if ($(this).attr("data-letter") == $(this).find("div").attr("data-letter")) {
                    wordIsCorrect++;
                }
            });
            console.log(wordIsCorrect);
            console.log($('.drop-box.spellword').length);
            if ($('.drop-box.spellword').length == wordIsCorrect) {

                $('.drop-box.spellword').addClass('wordglow2');
                $(right).val('Well Done!');
                $(right).show();
                audioS.play();
                $('.counter').html(completeWords + '/6').show();
                $(wrong).hide();
                $('.minibutton').prop('disabled', false);

            } else {

                $('.drop-box.spellword').addClass("wordglow4").css('color', 'transparent');
                $(wrong).val('Try Again');
                $('.minibutton').prop('disabled');
                $(wrong).show();
                audioF.play();
                $('.counter').html(completeWords + '/6').show();
                $(right).hide();
                //$('.minibutton').prop('disabled', true);

                $('.drop-box.spellword')
                    .animate({ 'opacity': 1 }, 2000, function()
                             {
                                $(this)
                                    .removeClass('wordglow4')
                                    .removeClass('occupied')
                                    .html('')
                                    });
            }


        }
    });

}


var completeLetters = $('.wordglow2').length;
var completeWords = (completeLetters / 3);
$('.counter').html(completeWords + '/6');

if (completeWords == 3) {
    $('table').fadeOut(2000);
}

var incompleteWords = $('.spellword').hasClass('.wordglow4').length;
if (incompleteWords == 3) {
    $('.minibutton').prop('disabled', false);
}

});

ありがとう!!

4

1 に答える 1

1

レベル完了テスト:

if (completeWords == 1) {
    $('table').fadeOut(2000);
}

クリックされた文字が追加される前にヒットします..コードが乱雑すぎて理解できませんが、このテストを、完成した単語をテストするブランチに移動することをお勧めします。これは正常に機能します。

if ($('.drop-box.spellword').length == wordIsCorrect) {

  $('.drop-box.spellword').addClass('wordglow2');
  $(right).val('Well Done!');

  // move the above test here
}
于 2012-09-06T08:06:23.317 に答える