0
我正在使用節點& socketi IO創建一個簡單的多人遊戲。當一個新客戶端加入時,我創建一個新的HTML元素,其ID爲每個客戶端的socket.id。節點/套接字IO多玩家
客戶端是移動設備,當他們移動時,我發送'deviceorientation'值,希望讓每個客戶端控制其中一個HTML元素。儘管我做了一些不正確的事情,但我無法弄清楚,因爲發生的一切都是客戶爲了控制最新的HTML元素而鬥爭,而不是用自己的套接字ID來控制HTML元素。
在服務器上:
servio.on('connection', function (socket) {
servio.sockets.emit('newplayer',socket.id);
socket.on('move', function(data) {
socket.broadcast.emit('clientmove', data);
console.log(data.myid);
});
});
在客戶端:
iosocket.on('newplayer', function(data) {
myid = data;
$('body').append('<div class="dot _jsDot" id="'+myid+'"></div>');
});
window.addEventListener("deviceorientation", handleOrientation, true);
function handleOrientation(event) {
var absolute = event.absolute;
var alpha = event.alpha;
var beta = event.beta;
var gamma = event.gamma;
vals = {
betaVal : beta,
gammaVal : gamma,
myid : myid
}
iosocket.emit('move', vals);
}
iosocket.on('clientmove', function(data) {
var x = Math.round(data.gammaVal)*3;
var y = Math.round(data.betaVal)*3;
$('#'+data.myid+'').css({'left':x + $(window).outerWidth()/2});
$('#'+data.myid+'').css({'top':y + $(window).outerHeight()/2});
});
我希望我俯瞰東西不多,而不是一些基本陷入困境。如果有人對節點& socket更有經驗,可以提供一些建議,那會很好。
如果你看一下使用的Chrome/Firefox瀏覽器開發工具(來源右鍵 - >檢查元素),元素是否具有正確的ID或者它們是否都具有id =「undefined」或類似的東西?可能是那麼簡單。 –
myid是一個全局變量嗎?因爲無論何時連接新客戶端,它都會覆蓋客戶端ID – user1937198