2014-02-09 10 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