我正在創建一個帶有 node、express 和 socket io 的多人紙牌游戲。我無法將一個玩家的拖放操作傳遞到連接的第二個玩家的螢屏上。
基本上我使用這個函式來處理客戶端的 drop 事件。我移動了卡片的 id,然后將它附加到它移動的 dropzone
function handleBoxDrop(e) {
const id = e.dataTransfer.getData('text');
let dropzone = e.target;
socket.emit('drop', id);
socket.on('drop', (id) => {
let temp = document.getElementById(id);
dropzone.appendChild(temp);
});
e.dataTransfer.clearData();
}
在服務器端我使用了這個:
o.on('connection', (socket) => {
console.log('a user connected');
socket.on('drop', (id) => {
io.emit('drop', id);
});
});
但是當我移動卡片時,卡片不會在其他瀏覽器上移動或移動到錯誤的位置。我不知道我做錯了什么,請幫忙。謝謝:)
uj5u.com熱心網友回復:
您需要將 socket.on 功能移動到手柄放置功能之外
function handleBoxDrop(e) {
'''your code'''
}
socket.on('drop', e => {
'''append to dropzone'''
})
socket.on 方法創建一個監聽器,只需要創建一次。您可以在實體化套接字物件后立即呼叫它。
const socket = websocket()
socket.on('drop', e => {})
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/322885.html
標籤:javascript 节点.js 表达 socket.io 拖放
