crowds/js/lib/Mouse.js

69 lines
1.7 KiB
JavaScript

/////////////////////////////
// MOUSE ////////////////////
/////////////////////////////
var Mouse = {
x:0, y:0,
pressed:false
};
Mouse.ondown = function(event){
Mouse.pressed = true;
Mouse.onmove(event);
publish("mouse/down");
};
Mouse.onmove = function(event){
Mouse.x = event.clientX;
Mouse.y = event.clientY;
publish("mouse/move");
};
Mouse.onup = function(event){
Mouse.pressed = false;
publish("mouse/up");
};
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);
};
}
// ALSO DON'T SCROLL WHEN TOUCH
document.body.addEventListener("touchstart", function(e){
e.preventDefault();
},false); // do NOT capture.
document.body.addEventListener("touchmove", function(e){
e.preventDefault();
},false); // do NOT capture.
// 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);
};