首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Socket.io/Node.JS数组元素传输

Socket.io/Node.JS数组元素传输
EN

Stack Overflow用户
提问于 2012-10-30 05:25:54
回答 1查看 205关注 0票数 0

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

我有,虽然有一个问题。

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

示例:

代码语言:javascript
复制
canvas[i].onTouchStart = onTouchStartEventFunction;

canvas[i].onTouchMove = onTouchMoveEventFunction;

canvas[i].onTouchEnd = onTouchEndEventFunction;

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

功能:

代码语言:javascript
复制
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点始终保持不变。

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

诚挚的问候

EN

回答 1

Stack Overflow用户

发布于 2012-10-30 13:28:43

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

代码语言:javascript
复制
 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);
  }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13129928

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档