2017-02-22 67 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