2017-03-05 48 views
0

林全新堆叠(和论坛),所以如果我在想念的事情道歉:对使用socket IO和帆布,商店DATAS通过ID

所以我用插座IO存储我的画布图纸的相关信息,我想保存我DATAS这样

global{ 
    session 
     cursor{ 
      x 
      y 
     } 
     line{ 
      id 
      infos{ 
       x 
       y 
       radius 
       color 
       type 
      } 
     } 
} 

目前,我有一个“onMouseDrag”功能

function onMouseDrag(event) { 
    var id = myPath.id; 
    var type = event.type; 
    var x = event.middlePoint.x; 
    var y = event.middlePoint.y; 
    var color = "red"; 
    drawItem(x, y, color); 
    EnvoieOnMouseDraging(x, y, color,type,id); 
} 

它调用这个函数:

function EnvoieOnMouseDraging(x, y, color,type,id) { 
    var data = { 
     id: id, 
     infos: { 
      x: x, 
      y: y, 
      color: color, 
      type: type, 
      id: id 
     } 
    }; 

    io.emit('drawCircle', data) 
} 

因此,它工作正常,但如果你看它记录的结果,我有这样的事情

infos stored in nodeserver

正如你可以看到它创建具有相同ID的多个对象。

现在我想要做的是将具有相同ID的所有数据存储在一个对象中。在这种情况下,一条路径将是一个对象,我将能够删除最后一条路径。

如果您觉得我不够清楚,请转到正确的方向,如果您有最简单的方法来做到这一点,我就可以了。

谢谢你们, 欢呼

回答

0

如果您的问题只是凭身份证收集您的信息,您可以轻松存储你的数据在阵列一样,也许二维数组,其中第一个指标是你的ID,然后在每一个信息。

/// 
    // if I have a record in the current Id then push new information 
    // if not, set my 2DArray as new Array with information at the 
    // current Id as Array 
    /// 

    myArray[myId]?myArray[myId].push(infos):myArray[myId] = [infos]; 

然后你就可以通过事件存储信息和发射/它们存储在一个mouseUp事件(当用户完成绘制),你可以在这里看到一个例子(看控制台输出):https://codepen.io/anon/pen/xqEzVL

首先,在拖动事件中存储每个动作,然后在mouseUp事件中存储数据,然后可以通过Id检索它们。

请注意,您可以将索引存储为字符串(如Javascript对象),因为数字会创建空行。

只有rought,但我希望你能考虑一下存储您的DATAS

+0

但在这种情况下,绘图不会是实时有道?它将出现在图的末尾。因为我们正在等待用户将onMouseUp发送给服务器? –

+0

噢好吧,我的坏,那么你必须发送数据像以前那样,但聚集在阵列服务器端,当你收到发射也许。 – Moug

+0

哦,好的,谢谢生病试图找出答案! –