Ver código fonte

Input now handles 'mousewheel' and 'wheel' events.

dev-tmpl
Bryan Miller 6 anos atrás
pai
commit
76ed24239f
1 arquivos alterados com 32 adições e 7 exclusões
  1. +32
    -7
      app/js/ui/Input.js

+ 32
- 7
app/js/ui/Input.js Ver arquivo

@@ -225,6 +225,8 @@ function CodesToEventName(codes, mouse){
case 8000:
ename += ((ename !== "") ? "+" : "") + "mousemove";
break;
case 8001:
ename += ((ename !== "") ? "+" : "") + "wheel";
default:
ename += ((ename !== "") ? "+" : "") + "mousebtn" + codes[i].toString();
}
@@ -267,6 +269,8 @@ function ReorderEventName(ename){
}
} else if (key === "mousemove"){
mcodes.push(8000);
} else if (key === "wheel"){
mcodes.push(8001);
}

// Now handle keyboard event names.
@@ -475,6 +479,7 @@ export default class Input{
x: pos.x,
y: pos.y,
button: this.__mouseLastButton,
delta: 0,
action: "mousemove"
};
if (ename !== "" && ename !== "mousemove")
@@ -503,6 +508,7 @@ export default class Input{
x: pos.x,
y: pos.y,
button: button,
delta: 0,
action: "mousedown"
};
this.__mousePosition = pos;
@@ -540,6 +546,7 @@ export default class Input{
x: pos.x,
y: pos.y,
button: button,
delta: 0,
action: "mouseup"
}
this.__emitter.emit("mouseup", data);
@@ -552,9 +559,25 @@ export default class Input{
}).bind(this);

var handle_mousewheel = (function(e){
if (this.__preventDefaults)
e.preventDefault();
// TODO: Finish me!
var pos = mousePosition(e);
if (pos.inbounds === true){
if (this.__preventDefaults)
e.preventDefault();
var ename = MouseEventName("wheel");
var data = {
source: this,
lastX: pos.lastX,
lastY: pos.lastY,
x: pos.x,
y: pos.y,
button: this.__mouseLastButton,
delta: Math.sign(e.deltaY),
action: "wheel"
};
if (ename !== "wheel")
this.__emitter.emit(ename, data);
this.__emitter.emit("wheel", data);
}
}).bind(this);

// This event is purely for preventing Default behaviors on mouse events we're not using.
@@ -577,7 +600,8 @@ export default class Input{
window.addEventListener("mousemove", handle_mousemove);
window.addEventListener("mousedown", handle_mousedown);
window.addEventListener("mouseup", handle_mouseup);
window.addEventListener("mousewheel", handle_mousewheel);
window.addEventListener("mousewheel", handle_mousewheel); // For older browsers?
window.addEventListener("wheel", handle_mousewheel);
window.addEventListener("click", handle_mouseprevdef);
window.addEventListener("dblclick", handle_mouseprevdef);
window.addEventListener("contextmenu", handle_mouseprevdef);
@@ -586,7 +610,8 @@ export default class Input{
window.removeEventListener("mousemove", handle_mousemove);
window.removeEventListener("mousedown", handle_mousedown);
window.removeEventListener("mouseup", handle_mouseup);
window.removeEventListener("mousewheel", handle_mousewheel);
window.removeEventListener("mousewheel", handle_mousewheel); // For older browsers?
window.removeEventListener("wheel", handle_mousewheel);
window.removeEventListener("click", handle_mouseprevdef);
window.removeEventListener("dblclick", handle_mouseprevdef);
window.removeEventListener("contextmenu", handle_mouseprevdef);
@@ -679,7 +704,7 @@ export default class Input{
}

listen(ename, func, owner=null, once=false){
if ((["keyup", "keydown", "keypress", "mousemove", "mousedown", "mouseup", "mouseclick"]).indexOf(ename) >= 0){
if ((["keyup", "keydown", "keypress", "mousemove", "mousedown", "mouseup", "mouseclick", "wheel"]).indexOf(ename) >= 0){
this.__emitter.listen(ename, func, owner, once);
} else {
ename = ReorderEventName(ename);
@@ -692,7 +717,7 @@ export default class Input{
}

unlisten(ename, func, owner=null){
if ((["keyup", "keydown", "keypress", "mousemove", "mousedown", "mouseup", "mouseclick"]).indexOf(ename) >= 0){
if ((["keyup", "keydown", "keypress", "mousemove", "mousedown", "mouseup", "mouseclick", "wheel"]).indexOf(ename) >= 0){
this.__emitter.unlisten(ename, func, owner);
} else {
ename = ReorderEventName(ename);

Carregando…
Cancelar
Salvar