我有一个画布元素数组,每个元素负责使用定义的函数与这些元素交互。
我有,虽然有一个问题。
每当我尝试通过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点始终保持不变。
因此,鉴于此,谁能指出我做错了什么?
诚挚的问候
发布于 2012-10-30 13:28:43
似乎在我们的问题描述中缺少了一些东西,但我会尝试创建一个自调用函数:
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);
}https://stackoverflow.com/questions/13129928
复制相似问题