【问题标题】:(AndEngine Multiplayer) Client Get data From Server when connected to a server(AndEngine Multiplayer)客户端连接到服务器时从服务器获取数据
【发布时间】:2016-03-19 14:33:36
【问题描述】:

您好,我正在使用 AndEngine 多人游戏扩展开发 MultiplayerGame,我需要客户端在连接到服务器时从服务器获取一些数据

现在如何从服务器获取一些数据?当客户端连接到服务器时,我需要获取一些 int 或 String 数据

只有这个代码:

// Listener - states when we (as a client) have connected to a server
@Override
public void onStarted(ServerConnector<SocketConnection> pServerConnector) {
    Log.i(TAG, "Connected To :" + pServerConnector.getConnection().getSocket().getInetAddress().getHostAddress().toString());

}

// Listener - In the event of a client connecting
    @Override
    public void onStarted(ClientConnector<SocketConnection> pClientConnector) {
        Log.i(TAG, "Client Connected From : " + pClientConnector.getConnection().getSocket().getInetAddress().getHostAddress());
    }

【问题讨论】:

  • 看看 Volley developer.android.com/training/volley/index.html。当然,您还需要一些服务器功能来提供数据。有关 REST 服务的文献可能是该任务的良好开端。
  • Tnx 但它关于 AndEngine(Android 的 2D 游戏引擎)和本地网络上的 Socket 编程,所以我认为 Volly 无能为力!

标签: android andengine multiplayer


【解决方案1】:

这可以帮助,但需要一些改变:

    // Listener - In the event of a client connecting
    @Override
    public void onStarted(ClientConnector<SocketConnection> pClientConnector) {
        Log.i(TAG, "Client Connected From : " + pClientConnector.getConnection().getSocket().getInetAddress().getHostAddress());
        String clientIp = pClientConnector.getConnection().getSocket().getInetAddress().getHostAddress().toString();

        if (MultiplayerExtensionBaseGame.mClient != null) {
            MultiplayerExtensionBaseGame.heroType = ++MultiplayerExtensionBaseGame.heroType;
            Log.i("HTI", "" + MultiplayerExtensionBaseGame.heroType);
        }

        if (MultiplayerExtensionBaseGame.mClient != null) {
            AddSpriteClientMessage message = (AddSpriteClientMessage) MultiplayerExtensionBaseGame.mMessagePool.obtainMessage(ClientMessages.CLIENT_MESSAGE_ADD_SPRITE);
            message.set(MultiplayerExtensionBaseGame.CLIENT_ID, mEngine.getCamera().getCenterX() - 250, mEngine.getCamera().getHeight() - (50 * MultiplayerExtensionBaseGame.heroType),
                    MultiplayerExtensionBaseGame.heroType);


MultiplayerExtensionBaseGame.mClient.sendMessage(message);
        MultiplayerExtensionBaseGame.mMessagePool.recycleMessage(message);
    }
}

然后

 int type = message.getSpriteType();

                        switch (type) {
                            case 1:
                                AnimatedSprite sBox = new AnimatedSprite(message.getX(), message.getY(), MultiplayerExtensionBaseGame.rBox, mEngine.getVertexBufferObjectManager());
                                sBox.setUserData("ServerHero");
                                sBox.animate(150);
                                mScene.attachChild(sBox);
                                break;
                            case 2:
                                AnimatedSprite sCircle = new AnimatedSprite(message.getX(), message.getY(), MultiplayerExtensionBaseGame.rCircle, mEngine.getVertexBufferObjectManager());
                                sCircle.setUserData("ClientHero_1");
                                sCircle.animate(150);
                                mScene.attachChild(sCircle);
                                break;
                            case 3:
                                AnimatedSprite sTriangle = new AnimatedSprite(message.getX(), message.getY(), MultiplayerExtensionBaseGame.rTriangle, mEngine.getVertexBufferObjectManager());
                                sTriangle.setUserData("ClientHero_2");
                                sTriangle.animate(150);
                                mScene.attachChild(sTriangle);
                                break;
                        }

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-16
    • 2015-09-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-01-17
    相关资源
    最近更新 更多