0

我有一组画布元素,每个元素都负责使用定义的函数与这些元素进行交互。

我有,虽然有问题。

每当我尝试通过 socket.io 传输当前单击的画布元素时,识别 previousInfo 变量似乎存在问题,该变量应该存储光标所在位置的信息。

例子:

canvas[i].onTouchStart = onTouchStartEventFunction;

canvas[i].onTouchMove = onTouchMoveEventFunction;

canvas[i].onTouchEnd = onTouchEndEventFunction;

这将创建画布数组并将每个实例存储在数组中。

功能:

var onTouchStartEventFunction = function(info, index, count, event) {
draw(info.layerX, info.layerY, event.type, info.layerX, info.layerY, this);
    socket.emit('touchevent', {
        x: info.layerX,
        y: info.layerY,
        e: event.type,
        px: info.layerX,
        py: info.layerY,
        idx: this
});
}

var onTouchMoveEventFunction = function(info, index, count, previousInfo, event) {
if(previousInfo === null) 
{} 
else {
    document.getElementById("timer").innerHTML = "X: " + info.layerX + " Y: " + info.layerY + " pX:" + previousInfo.layerX + " pY:" + previousInfo.layerY;
    draw(info.layerX, info.layerY, event.type, previousInfo.layerX, previousInfo.layerY, this);
    socket.emit('touchevent', {
        x: info.layerX,
        y: info.layerY,
        e: event.type,
        px: previousInfo.layerX,
        py: previousInfo.layerY,
        idx: this
    });
}
}

var onTouchEndEventFunction = function(info, index, count, event) {
draw(info.layerX, info.layerY, event.type, info.layerX, info.layerY, this);
socket.emit('touchevent', {
    x: info.layerX, 
    y: info.layerY,
    e: event.type,
    px: info.layerX,
    py: info.layerY,
    idx: this
});
}

如果我不通过套接字传递 'idx:this' 一切正常,并且 previousInfo 按预期工作。但是,每当我开始使用“idx:this”时,pX 和 pY(previousInfo X 和 Y 坐标)总是相同的,没有变化。

最糟糕的是,每一个实例都会发生这种情况,而且无论我点击哪里,pX 和 pY 点总是保持不变。

那么,鉴于此,谁能指出我做错了什么?

此致

4

1 回答 1

0

我们的问题描述中似乎缺少一些东西,但我会尝试创建一个自调用函数:

 var onTouchEndEventFunction = function(info, index, count, event) {
     draw(info.layerX, info.layerY, event.type, info.layerX, info.layerY, this);
     (function (canvas) {
        socket.emit('touchevent', {
            x: info.layerX, 
            y: info.layerY,
            e: event.type,
            px: info.layerX,
            py: info.layerY,
            idx: canvas
    });)(this);
  }
于 2012-10-30T05:28:42.610 回答