首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >节点/套接字IO多播放器

节点/套接字IO多播放器
EN

Stack Overflow用户
提问于 2013-10-27 22:37:08
回答 1查看 264关注 0票数 0

我使用node & socketi IO来创建一个简单的多人游戏。当一个新的客户端加入时,我创建了一个新的HTML元素,每个客户端的ID都是socket.id。

客户端是移动设备,当它们移动时,我会发送“deviceorientation”值,希望每个客户端都能控制其中一个HTML元素。我做了一些错误的事情,我不太明白,因为所有的客户端都在争夺对最新HTML元素的控制权,而不是拥有对具有自己套接字id的HTML元素的控制权。

在服务器上:

代码语言:javascript
复制
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);
    });

});

在客户端:

代码语言:javascript
复制
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});

        });

我希望我忽略了一些小的东西,而不是一些根本的混乱。如果任何对node & socket io更有经验的人都能提供一些建议,那就太好了。

EN

回答 1

Stack Overflow用户

发布于 2013-10-28 05:24:59

您正在将每个人的myid更新为新玩家的id。我建议您区分这两者。

在服务器上执行如下操作:

代码语言:javascript
复制
everyone.push(socket.id); // global array of all player ids
socket.emit('init',[socket.id,everyone]);
servio.sockets.emit('newplayer',socket.id);

在客户机上执行如下操作:

代码语言:javascript
复制
socket.on('newplayer', function(data) {
    myid = data.id;
    create_div_with(data.id);
    create_everyone_else(data.everyone);
});
socket.on('newplayer', function(id) {
    create_div_with(id);
});
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19619251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档