cocos-Lua请求服务端数据(XMLHttpRequest小积累)

本文介绍了如何使用cocos2d-x的Lua接口XMLHttpRequest从服务端获取JSON数据。服务端保存游戏事件数据,客户端通过GET请求下载并解析数据,实现游戏回放功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

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

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

其中就用到了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文件存在就把数据写进去

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值