2014-02-09 44 views
0

我在腳本中檢測到hit.item並使用它填充網格的正方形。如何用node.js發射hit.item

我的腳本的繪製部分正在工作,但是當我發射該項目時,它不起作用。

我想那個hit.item是一個結構,我需要在發送之前分解它呢?

雖然這是一個猜測 - 這是我的第一個node.js腳本!

任何人都可以發光嗎?

io.on('drawFill', function(data) { 
console.log('drawFill received:' , data.target); 
drawFill(data.target); 

function onMouseMove(event){ 
var hit = project.hitTest(event.point); 
if (hit){ 

    drawFill(hit.item); 
    emitFill(hit.item); 
    console.log('drawto',hit.item); 
} else { 
    console.log("no hit"); 
} 
} 

function drawFill(item){ 
item.fillColor = "#00F8FF"; 
//console.log(item); 
} 
function emitFill (target) { 

// Each Socket.IO connection has a unique session id 
var sessionId = io.socket.sessionid; 

// An object to describe the circle's draw data 
var data = { 

target : target 
}; 
// send a 'drawCircle' event with data and sessionId to the server 
io.emit('drawFill', data, sessionId); 
} 
+0

你能說明你是如何定義'io'的嗎? –

+0

Err ..像這樣:io = io.connect('/'); – user1714819

+0

可以肯定的是,當我在我的io.on函數中獲取寫入控制檯的消息時,這個位起作用。它只是我收到的數據 - data.target - 在發送到我的繪圖函數時不起作用。 – user1714819

回答

0

糾正我,如果我錯了,但你是從客戶端發出事件drawFill,也在客戶端接收?此外,socket.io以文本或JSON形式發佈數據,即屬性:值形式。所以如果你的物品有多個屬性,那麼你真的需要把它分解。 假設你的項目有兩個屬性,例如顏色,名稱等,並要發送到服務器,那麼你應該做的更好爲:

var data = {color: target.color, 
      name: target.name, 
      sesId: sessionid} 

,併發出爲

io.emit('drawFill', data); 
} 

這將去插座.io服務器。

+0

感謝但由於某種原因,這給了我:Uncaught TypeError:將圓形結構轉換爲JSON。無法解決原因。不知道這是否一直是問題。自己轉圈圈! – user1714819

+0

我編輯了我的答案,這有幫助嗎? –

+0

謝謝 - 昨天我偶然發現我需要發送單個屬性。我認爲我現在幾乎可以工作,即使使用我的簡單腳本,也會遇到很多語法問題並且難以找到調試問題。 「將圓形結構轉換爲JSON」實際上意味着什麼?即什麼是圓形結構 - 一個引用自身的項目? – user1714819