यहाँ मेरी संस्करण है:
<html>
<head>
<script type="text/javascript" src="jquery-1.4.4.min.js"></script>
<script type="text/javascript" src="rx.js"></script>
<script type="text/javascript" src="rx.jQuery.js"></script>
</head>
<body>
<p id="result"></p>
<script type="text/javascript">
$(function() {
var konami = $(document).toObservable("keyup").Select(function(e) {
return e.keyCode
}).SkipWhile(function(k) {
return (k != 38)
}).BufferWithCount(
10
).Where(function(ks) {
return ks.length == 10 &&
ks[0] == 38 && ks[1] == 38 &&
ks[2] == 40 && ks[3] == 40 &&
ks[4] == 37 && ks[5] == 39 &&
ks[6] == 37 && ks[7] == 39 &&
ks[8] == 66 && ks[9] == 65
})
var konamisub = konami.Subscribe(function(e) {
$("#result").text("KONAMI!")
$("#result").fadeIn().fadeOut()
})
})
</script>
</body>
</html>
मैं Select
साथ keycodes की एक धारा में KeyUp ईवेंट के स्ट्रीम कनवर्ट करते हैं, तो जब तक उपयोगकर्ता SkipWhile
के साथ उपयोगकर्ता दबाएगा (कीकोड 38) तब तक कीप्रेस को अनदेखा कर रहा है, फिर BufferWithCount
के साथ 10 कीस्ट्रोक एकत्रित करें, फिर Where
के साथ कीस्ट्रोक की जांच करें।
मैंने बफरविथटाइम का उपयोग करने की कोशिश की, लेकिन यह कीस्ट्रोक के बीच में कटौती करता है।
अगर कोई सुधार का सुझाव दे सकता है, तो मुझे उन्हें सुनना अच्छा लगेगा।
स्रोत
2010-12-08 15:31:26
महान प्रश्न :) –