Привязка двух действий к одному и тому же событию - PullRequest
0 голосов
/ 03 апреля 2011

Я хотел бы связать два события вместе.

Прямо сейчас моя установка состоит в том, чтобы связать все необходимые действия мыши с холстом, а затем вызвать функцию-обертку, которая устанавливает положение мыши относительно холста. Затем функция-обертка вызывает правильное действие во внутренней функции. Я также хотел бы связать touchstart touchmove и touchend

Вот пример структуры того, что у меня есть

$('canvas').bind('mousedown mousemove mouseup', ev_canvas);
function ev_canvas (e) {
    var pos = findPos(this);
    e._x = e.pageX - pos.x;
    e._y = e.pageY - pos.y;

    var func = tool[e.type];
    if (func) {
        func(e);
    }
}

tools.pen = function () {
    tool.mousedown = function (e) {
        //Stuff to do
    };

    tool.mousemove = function (e) {
        //Stuff to do
    };

    tool.mouseup = function (e) {
        //Stuff to do
    };
}

Это вызывает правильный инструмент, а затем вызывает функцию мыши (вверх | вниз | двигаться) в зависимости от действия.

Есть ли способ привязать действия касания к тем, чтобы он мог вызывать одно или другое без копирования и вставки связки кода?

1 Ответ

4 голосов
/ 03 апреля 2011

Я бы создал таблицу сопоставления - eventName: callbackName.Вот образец

var functionMappings = { 
   mousemove: "mousemove",
   touchmove: "mousemove",
   mousedown: "mousedown",
   touchstart: "mousedown",
   mouseup: "mouseup",
   touchend: "mouseup"
};

var func = tool[functionMappings[e.type]];

if (func) {
   func(e);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...