精华内容
下载资源
问答
  • 其实也就是服务端把相应事件的发给客户端的数据保存下来,到客户端要回放了,就去服务端下载数据,再把游戏过程的流程自动跑一遍 XMLHttpRequest中提供GET和POST两种http请求方式, 返回数据类型有以下几种: cc....

    在公司看视频回放时,我就在想,这么神奇,这到底是怎么实现的?

    后来看了一下代码,发现有时候你觉得非常不可思议的事,其实很简单

    其实也就是服务端把相应事件的发给客户端的数据保存下来,到客户端要回放了,就去服务端下载数据,再把游戏过程的流程自动跑一遍

    其中就用到了XMLHttpRequest

    XMLHttpRequest中提供GET和POST两种http请求方式,

    返回数据类型有以下几种:

    cc.XMLHTTPREQUEST_RESPONSE_STRING = 0  -- 返回字符串类型
    cc.XMLHTTPREQUEST_RESPONSE_ARRAY_BUFFER = 1 -- 返回字节数组类型
    cc.XMLHTTPREQUEST_RESPONSE_BLOB   = 2 -- 返回二进制大对象类型
    cc.XMLHTTPREQUEST_RESPONSE_DOCUMENT = 3 -- 返回文档对象类型
    cc.XMLHTTPREQUEST_RESPONSE_JSON = 4 -- 返回JSON数据类型

    	local xhr = cc.XMLHttpRequest:new()	--http请求
    	xhr.responseType = cc.XMLHTTPREQUEST_RESPONSE_JSON	--请求类型
    	local url = string.format("http://%sjson/%s.json", NetConfig_getInstance():getHttpDomain(), videoId) --服务端保存数据的位置与名称
    	xhr:open("GET", url)
    	local function onResponse()
    		local str = xhr.response	--获得返回数据
    		tools.saveVideoJsonFile(videoId, str)	--保存数据到本地
    		local playInfo = json.decode(str)	--解析json文件
    		startPlay(playInfo)	--传递数据进入下一步操作,开始进行回放
    	end
    	xhr:registerScriptHandler(onResponse)	--注册脚本方式回调
    	xhr:send()	--发送

    在代码中我们可以看见我们从url的地址里获取数据,之后保存到本地,再解析运用

    在这里是有服务端保存数据为json格式数据,在客户端请求获得数据,之后再进行解析

    --保存本地json视频文件,传参是该视频文件名字和json字符串,直接返回的是table
    function tools.saveVideoJsonFile(fileName, content)
    	local pathToSave = cc.FileUtils:getInstance():getWritablePath()
    	local f = io.open(pathToSave .. fileName .. ".json", "w")
    	if f then
    		f:write(content)	--写入数据
    		f:close()
    	end
    end
    上面代码为保存从服务端中下载下来的数据,f文件存在就把数据写进去

    展开全文
  • 客户端发送序列化后的数据给服务器 Net.send(JSON.stringity(data)) let data = {                 key: ...

    客户端发送序列化后的数据给服务器
    Net.send(JSON.stringity(data))

    let data = {
                    key: “register”,
                    account: lable,
                    password: lable2
                }

    服务器反序列化客户端发送的数据存到data变量中去:

    Let data=JSON.pause(data)
    Key: 根据key对应的值来执行第几个函数
    Account: 对应输入的账号
    Password:对应输入的密码

    let loginOk=false;
            if(g_Data[ws.pid]){
                if(g_Data[ws.pid].accountdata.account){
                    if(g_Data[ws.pid].password
    data.password){
                        loginOk=true;
                    }
                }
            }
            let info={
                key:“login”,
                Ok:loginOk
            }
            ws.send(JSON.stringify(info));

    定义一个对象g_Data={}
     g_Data[ws.pid] = {
                    account: data.account, //账号
                    password: data.password,//密码
                    maxScore: 0             //分数
                };

    如果账号不存在 则存入数组 存在则验证账号密码 成功后将标签loginOk赋值false 发给服务器

    if(g_Data[ws.pid]){
                g_Data[ws.pid].ScoreMax=Math.max(g_Data[ws.pid].ScoreMax,data.Score);

    服务器收到客户端发来的分数score后 与之前的分数相比 取最大值存入数组

    展开全文
  • websocket +protobuf+cocos creator+客户端+服务端,已做了C++和客户端的数据相互通迅转换
  • 在第二步中我们学会了请求服务端,并且正确的打印了服务端返回的数据...cocos2dx 使用curl库与php服务端通信代码示例:链接: https://pan.baidu.com/s/1ge92ydH 密码: yj7j首先我们先分析下我们的json数据。我们从返...

    在第二步中我们学会了请求服务端,并且正确的打印了服务端返回的数据,下面我们开始学习怎么处理服务端下发的数据。本例服务端返回的是一个sting类型的json格式数据。接下来我们将学会如何解析json格式数据。

    cocos2dx 使用curl库与php服务端通信

    代码示例:链接: https://pan.baidu.com/s/1ge92ydH 密码: yj7j

    首先我们先分析下我们的json数据。

    08c756c795de6642b5c3587915d94ea8.png

    我们从返回的json数据来看,我们一共有6条数据。每条数据有三个部分,每个部分都是一个键值对。

    这里我们同样用cocos2dx给我们提供的rapidjson库来解析json格式的数据。

    首先,在HelloWorldScene.h头文件添加json的引用头文件。

    #include "json/rapidjson.h"

    #include "json/document.h"

    然后我们新建一个CurlReadJson类来实现内容的接收和转换。

    这里我直接贴 代码。

    //CurlReadJson.h

    fa9b29674978dcca4c84450558b11fa8.png

    //CurlReadJson.cpp

    bcd195ede4dcfbd795b1b16c734ca9e2.png

    这个类的功能很简单。主要功能还在调用的地方。

    我们在HelloWorldScene.h里,添加一个数据解析的方法InitListByServerData用来拆分单个的json数据。m_map_server_list用来把拆分的json数据保存为客户端需要的数据。

    一个oneUpdate方法来更新一次界面显示,把visibleSize,origin改成全局的声明。

    a4b5599fd47a11c83fa94a56c711a176.png

    这些做好了,首先我们来实现具体的功能代码。

    1、处理服务端返回的字符串流,实现单个json数据的拆分。

    a90ee9ee93008186eade802be66e5354.png

    rapidjson::Document documentRecive;用来转换接收的数据。因为服务端返回给我们的数据虽然是json看起来是json格式的,但是类型是string类型的。通过这些代码我们的数据就会被拆分成单个的json类型的数据了。然后我们在用InitListByServerData方法来实现单个json数据的解析。

    dffde107ffa84852c987d168c6902ed6.png

    这里CurlReadJson类处理单个的内容数据,然后加入到m_map_server_list里。

    然后我们来测试下m_map_server_list里值对不对,在我们创建的oneUpdate方法里实现测试数据。

    66ba1f1978dc44fc0135ea4d0f167de6.png

    然后我们在menuCloseCallback方法里执行一次调度器。

    this->scheduleOnce(schedule_selector(HelloWorld::oneUpdate), 1.0f);//回调更新

    bf5615fd5825e183627f3fa65e1d521f.png

    下面我们来测试下能不能正确的在游戏窗口显示我们的服务端数据。

    ced0977cf1ef96295a2c935a36d755f3.png

    4151f86599bbf7b1a4ac9bb05f84900d.gif

    数据正常的显示了,大家看看怎么样。

    展开全文
  • cocos2dx 使用curl库与php服务端通信代码示例:链接: https://pan.baidu.com/s/1ge92ydH 密码: yj7j注释掉helloworld图片的加载。把helloworld的label内容改成“cocos2dx curl php”,启动下看下效果。能正常运行,...

    前面我们用php搭建了服务器,下面我们新建cocos2dx项目。然后编译成功后进行改写。

    cocos2dx 使用curl库与php服务端通信

    代码示例:链接: https://pan.baidu.com/s/1ge92ydH 密码: yj7j

    注释掉helloworld图片的加载。把helloworld的label内容改成“cocos2dx curl php”,启动下看下效果。

    953d9e8a38d5ae1eccfeabc52bf6661f.png

    能正常运行,下面我们修改HelloWorldScene.cpp文件里的void HelloWorld::menuCloseCallback(Ref* pSender)方法,注释掉退出按钮的功能。

    下面我们就把通信部分写在这个按钮的回调方法里,通过点击按钮触发通信。

    这里我们用的是cocos2dx 的 curl库,首先在HelloWorldScene.h里添加头文件,和库引用。#include "curl/include/win32/curl/curl.h"

    #pragma comment ( lib, "libcurl_imp.lib" )

    #pragma comment ( lib, "ws2_32.lib" )

    #pragma comment ( lib, "wldap32.lib" )

    然后我们才能正确的使用CURL库。

    1、curl初始化

    2、网络连接初始化

    3、设定数据接收方法

    4、设定数据接收变量

    5、发起联网请求

    6、处理结果,根据网络连接返回的结果实现跳转和提示

    正确的curl使用流程就是这6步。

    下面我贴代码示例:

    fa2d9b32be71d9ff230ebea8e8d3fc7c.png

    returnData是我们的回调函数。

    我们在HelloWorldScene.h头文件新加一个方法,并实现。

    f30fecd5627f22dbf011eee88a0ad17b.png

    a0c3d676c22caacbfb78aab053973fd6.png

    下面我们运行下看看效果,点击按钮。测试下看看能不能打印出来log数据。

    87c8aad3c3432dbf1edf19c0753c269a.png

    如图,这里成功的输出了数据,是不是和php返回的数据是一样的啊。

    f089a40587c71401bd5900616df31350.gif

    下面我们开始解析这个json数据,看看怎么使用服务器返回的数据。

    展开全文
  • cocos-creator连接服务端 注册与登入

    千次阅读 2019-04-12 17:19:44
    //数据需要与服务端枚举类型匹配 var pack={cmd:0,msg:str}; var packstr=JSON.stringify(pack); this.ws.send(packstr) }, //登入 Loading:function() { var user={account:this.account.string,...
  • 更深入的cocos2dx与firefly通信代码,包含网络收发消息的完整示例,解析数据使用的是protobuf
  • 客户端: 连接服务端 bool connectServer(const char* serverIP, unsigned short port); 向服务端发送消息 ...接受服务端数据的回调函数 std::functionvoid(const char* data, int count)> onR
  • 在线抓娃娃客户端cocoscreator原始码 包含更新的服务端Php原始文件在svr_all目录中 服务端配置配置方法: 按照如下步骤进行配置即可: 数据库文件 数据库文件为:svr_all目录下的zhuawawa.sql,请自行建立数据库,...
  • nodejs游戏服务器开发系列文章以nodejs+Typescript+CocosCreator+WebSocket为例,搭建服务器和客户端。 WebSocket介绍 官网:http://websocket.org/index.html 详细介绍参考阮一峰的教程:...
  • 单就完整性来说,幼麟棋牌的开源代码比较完整(cocosCreator客户端、nodeJs服务端、数据库脚本)实现了一款房卡麻将基本功能(热更新、微信登陆分享、游戏回放),下面贴出分析笔记,希望对后面学习的人多少有些帮助...
  • 单就完整性来说,幼麟棋牌的开源代码比较完整(cocosCreator客户端、nodeJs服务端、数据库脚本) 实现了一款房卡麻将基本功能(热更新、微信登陆分享、游戏回放),下面贴出分析笔记,希望对后面学习的人多少有些...
  • 元旦前面几天都在忙着面试,随后的几天也就一直在做服务端基础库开发方面的工作.对于服务端开发,是很久之前的事情了.那时候我还在大学读书,一直都是在倒腾服务端开发方面的东西,毕业后参加公司工作就是一直从事客户端...
  • 前言 ...nodejs游戏服务器开发系列文章以nodejs+Typescript+CocosCreator+WebSocket为例,搭建服务器和客户端。 WebSocket介绍 官网:https://developer.mozilla.org/zh-CN/docs/Web/API/WebSocket ...
  • 微信关系链互动数据结合cocos实现1. 前言2. cocos排行榜功能3. 微信关系链互动数据准备工作4. 整体流程详述步骤1:玩家A给玩家B赠送一个金币步骤2:玩家B打开游戏排行榜后,收到别人给他赠送的金币步骤3:玩家B打开...
  • 客户端quick-cocos程序如下: local info={hero={  heroname="zhanshen",herolevel=1,herohp=200  },  [1]={  name="fengbao",level=2,att=100  } }  function onRequestFinished
  • 前面我给小伙伴们讲了任务系统客户端,服务端写了前搬部分的消息接受处理,现在我在借大家讲解一下当我在服务端这边接受到了客户端的消息,我要知道是不是满足了条件,现在你就要用到数据库了,不管是这样还有其他的...
  • 做网络游戏的时候,我们肯定不能使用http进行数据的交换,下面纪录下cocos2d-x使用socket的方法 客户端用的是ODSocket,服务端研究半天,最后还是发现java做socket服务端比C++要方便太多。 下面是cocos2d...
  • 在游戏中通常需要保存...cocos2d-x引擎为开发者提供了数据存储类CCUserDefault,该类支持跨平台使用,使用比较方便。CCUserDefault支持bool、int、float、double以及string 5种类型的数据保存,各种数据保存的实现...
  • 单就完整性来说,幼麟棋牌的开源代码比较完整(cocosCreator客户端、nodeJs服务端、数据库脚本) 实现了一款房卡麻将基本功能(热更新、微信登陆分享、游戏回放),下面贴出分析笔记,希望对后面学习的人多少有些...
  • 由于一个网友使用笔者写的SocketClient作为游戏客户端网络数据接收类,出现了一些问题 这个问题就是因为当执行onRecv时创建了一个Sprite(Sprite::create(...为了解决这个问题,特意看了cocos2dx的WebSocket的实现方
  • #include "cocos2d.h" #include  #include  USING_NS_CC; // 对于windows平台 #if (CC_TARGET_PLATFORM == CC_PLATFORM_WIN32) #include  #pragma comment(lib,...
  • 好久没写东西,最近在研究服务端框架Firefly和Pomelo,
  • 1 服务端设置。 这里我用的iis,阿里云的服务器。首先,用远程桌面连接阿里云的服务器,然后找到iis管理器,添加角色,由于只是测试而已,就直接用网站服务器就ok。 根据提示安装web所需要的环境。然后,就可以在...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 3,288
精华内容 1,315
关键字:

cocos服务端数据