Bacon.js Example: Father and Son Wallet War
A bacon.js implementation of http://alfredodinapoli.wordpress.com/2011/12/24/functional-reactive-programming-kick-starter-guide/
HTML
<script src="//cdnjs.cloudflare.com/ajax/libs/bacon.js/0.3.15/Bacon.min.js"></script>
JavaScript
$().ready(function () {
var makeCoordinate = function(v) {
return {x: v.clientX, y: v.clientY};
};
var mergeStreams = function(v1, v2) {
return {down: makeCoordinate(v1), up: makeCoordinate(v2)};
};
var $html = $('html');
var mousedownStream = $html.asEventStream('mousedown');
var mouseupStream = $html.asEventStream('mouseup');
var dragStream = Bacon.zipWith([mousedownStream, mouseupStream],
mergeStreams);
dragStream.onValue(function(val) {
window.console.log(val.down.x, val.down.y, val.up.x, val.up.y);
});
});