0

エースをランダムにクリックして、16 枚のカードを「手札」に追加します。次に、手札から削除したい手札のカードをクリックして、ランダムにカードを削除します。それらをすべて削除します。ランダムに削除します。クリック数を追跡します。数ターンごとに、手札からすべてのカードを取り除くのに 16 回未満のクリックしかかかりません。時々、2 枚のカードが 1 回のクリックで取り除かれます。

http://jsfiddle.net/7z7kP/4/

コードに見落としているバグはありますか?

self.afterAdd = function(element) {         
    var el = $(element);            
    el.addClass( el.text() );
    el.click( function(event) {
        el.animate({width: 0, height: 0}, 222, function() {
            self.hand.splice(el.index(),1);
        });
    });
};
4

1 に答える 1

0

2 枚のカードが消えても安全に再現できます。任意のエースをダブルクリックすると、手札に 2 枚のカードが得られます (予想どおり)。しかし、それらは同じクリック ハンドラーを共有しているように見えるため、どちらもアニメーション化されますが、手から削除されるのは 1 つだけです (observableArray)。

アニメーションが削除された後、この動作は再発しませんでしたので、何か厄介なことが起こっていると思います.

self.afterAdd = function(element){         
    var el = $(element);            
    el.addClass( el.text() );
    el.click( function(event) {
        var idx = el.index();
        self.hand.splice(idx,1);
    });
};

アニメーションを非表示にするための素敵なCSS3 ベースのソリューション(単純な を使用) を提供したかったのですel.addClass("hide");が、期待どおりに機能しませんでした。再び両方のカードが消えましたが、そのうちの 1 つが再び現れました。-.-

.hide {
  -webkit-animation: hidecard 1s;
}

@-webkit-keyframes hidecard {
    0% { height: 0; width: 0; opacity: 1; }
    100% { height: 0; width: 0; opacity: 0; display:none; }
}
于 2013-10-05T19:55:32.747 に答える