2017-02-22 84 views
0

原谅我,我一直在学习节点和JS在过去几天,来自C#/团结,一切都有点不同于我所知道的。我正在制作一台协作式鼓机,我有90%的工作:http://ec2-54-194-29-66.eu-west-1.compute.amazonaws.com:9000/问题与发送事件数据与点击socket.io

我有节点服务器工作,按键被发送和鼠标co-ords,但我有一个映射鼠标点击事件,我正在注册其他连接和服务器的控制台中的点击,但似乎我不太理解正确地发送事件的内容。我不能写var data = list:e.classList并读取data.list来看看同样的东西吗?

这里的代码中,我一直在试图获得工作,但我得到无法读取属性错误:

function newMouseOn(data) 
    { 
     console.log("Is this working Click On?" + data.target); 
     data.list.add('active'); 
     //clickPlayOn(data); 
     data.target.play(); 
    } 

    function newMouseOff(data) 
    { 
     console.log("Is this working ClickOff?" + data.target); 
     //clickPlayOff(data); 
     data.list.remove('active'); 
    } 

socket.on('mouseOn', newMouseOn); 
socket.on('mouseOff', newMouseOff); 


    function clickPlayOn(e) 
    { 
     var data = { 
     id: e.target.id, 
     timeStamp: e.timeStamp, 
     type: e.type, 
     target: e.target, 
     list: e.classList 
     } 
     socket.emit('mouseOn', data); 
     e.target.classList.add('active'); 
     e.target.play(); 
    } 

    function clickPlayOff(e) 
    { 
     var data = 
     { 
     id: e.target.id, 
     timeStamp: e.timeStamp, 
     type: e.type, 
     target: e.target, 
     list: e.classList 
     } 
     socket.emit('mouseOff', data); 
     e.target.classList.remove('active'); 
    } 


server side: 

    socket.on('mouseOn', MouseClick); 
    socket.on('mouseOff', MouseClicked); 


function MouseClick(data) 
    { 
    socket.broadcast.emit('mouseOn', data); 
    console.log(data); 
    } 

    function MouseClicked(data) 
    { 
    socket.broadcast.emit('mouseOff', data); 
    console.log(data); 
    } 

我本来想只发出E或e.target,而不是数据结构,但似乎没有工作。有没有人有任何想法,我失踪? (除脑以外)

回答

1

所收到的对象(data)没有任何方法,将其转移为JSON,然后转换为对象,所以可以不援引像data.target.play();任何方法。

如果您需要任何您收到对象时必须添加的方法。

+0

好的我想我已经得到了你,它只是发送一堆文本,没有办法做什么。所以我反而去:btn [e.target.id] .classList.add('active'); btn [e.target.id] .play(); 我的按钮设置为: for(var i = 0; i Richop

+0

对不起,我没有深入到代码的其余部分,无论如何,您需要传输数据以了解在其他客户端播放的内容,例如按钮ID或声音等。 我认为没有循环如果你从'clickPlayOn'发出并在'newMouseOn'中接收到它,可能是可能的 –

+0

我一直在尝试,发送按钮id以及ClickPlayOn中的部分,我只想添加按钮的索引'btn [i] .addEventListener('mousedown',clickPlayOn(index:i));' 我可以在(e)事件函数中添加一个索引,通常它就像'clickPlayOn()',但函数有clickPlayOn(e),我认为它是事件,我可以把事情放在它上面吗?什么是语法,我得到了一些关于失踪)的参数列表后,当试验上面的位。感谢您的帮助btw,真的很友好。 – Richop