crowds/slides/js/lib/Mouse.js
2018-03-27 13:39:08 -04:00

64 lines
No EOL
1.6 KiB
JavaScript

/////////////////////////////
// MOUSE ////////////////////
/////////////////////////////
var Mouse = {
x:0, y:0,
pressed:false
};
Mouse.ondown = function(){}; // add your own callback
Mouse.onmove = function(){}; // add your own callback
Mouse.onup = function(){}; // add your own callback
Mouse._ondown = function(event){
Mouse.pressed = true;
Mouse._onmove(event);
Mouse.ondown();
};
Mouse._onmove = function(event){
Mouse.x = event.clientX;
Mouse.y = event.clientY;
Mouse.onmove();
};
Mouse._onup = function(event){
Mouse.pressed = false;
Mouse.onup();
};
Mouse.update = function(){
// Just pressed, or just released (one frame ago)
Mouse.justPressed = (!Mouse.lastPressed && Mouse.pressed);
Mouse.justReleased = (Mouse.lastPressed && !Mouse.pressed);
// The last frame's stuff
Mouse.lastX = Mouse.x;
Mouse.lastY = Mouse.y;
Mouse.lastPressed = Mouse.pressed;
};
// TOUCH.
function _touchWrapper(callback){
return function(event){
var _event = {};
_event.clientX = event.changedTouches[0].clientX;
_event.clientY = event.changedTouches[0].clientY;
event.preventDefault();
callback(_event);
};
}
// INIT
Mouse.init = function(target){
// Regular mouse
target.addEventListener("mousedown", Mouse._ondown);
target.addEventListener("mousemove", Mouse._onmove);
window.addEventListener("mouseup", Mouse._onup);
// Touch events
target.addEventListener("touchstart", _touchWrapper(Mouse._ondown), false);
target.addEventListener("touchmove", _touchWrapper(Mouse._onmove), false);
document.body.addEventListener("touchend", function(){
Mouse._onup();
}, false);
};