2017-03-05 49 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

哦,好的,謝謝生病試圖找出答案! –