用点击事件移动图像
我正在尝试一个使用Node.js和Socket.io的拔河比赛,我很困惑我应该如何继续。 我的想法是如果左键单击,移动一个图像,如果单击右键单击右。 要真正让图像移动,我假设我需要在app.js
的函数。 我应该如何去实施呢? 我有我的server.js
文件设置像这样:
socket.on('tug', function (side) { if(side == "left"){ console.log("left button clicked"); leftPos++; rightPos--; pos[0] = leftPos; pos[1] = rightPos; console.log(pos); } else if (side == "right"){ console.log("right button clicked"); leftPos--; rightPos++; pos[0] = leftPos; pos[1] = rightPos; console.log(pos); } });
然后在我的app.js我有这个:
$(document).ready(function(){ $("#left").on('click', function(){ socket.emit('tug', 'left'); }); $("#right").on('click', function(){ socket.emit('tug', 'right'); }); });
对于客户端,您应该添加两个更多的套接字侦听器,
1)一个分配玩家的一面
2)听取所做的动作
像这样的东西
$(document).ready(function(){ socket.emit('ready'); }); socket.on('assign', function(side){ if(side==='left') { $("#left").on('click', function(){ socket.emit('tug', 'left'); }); } else { $("#right").on('click', function(){ socket.emit('tug', 'right'); }); } }); socket.on('move', function(newPos){ $("#rope").css({left: newPos}); });
在哪里, #rope
是你的绳索,也许是position:absolute
集合
而只是为了简化服务器上的事情,你可以只使用中心并移动它,并在最后定义限制,以决定获胜者
ropeCenter = 300; socket.on('tug', function (side) { if(side == "left"){ console.log("left button clicked"); ropeCenter--; } else if (side == "right"){ console.log("right button clicked"); ropeCenter ++; } //If you're planning to maintain rooms use io.sockets.in('room').emit below if(rope > 100 && ropeCenter<500 ) //Someone must have toppled by now, right? io.sockets.emit('move',ropeCenter); else { console.log('We have a winner'); io.sockets.emit('end'); } }); assignFirst = true; socket.on('ready', function(){ if(assignFirst){ socket.emit('left'); assignFirst = false; } else { socket.emit('right'); } });