Cocos2d-X与游戏开发cocos2d-xcocos2d-Lua

七,cocos2d-x lua中的XMLHttpRequest对

2017-11-09  本文已影响40人  亮亮同学

cocos2d-x技术群新群:117871561
c++技术交流群:593010226

这里不死抠cocos-lua组件的原理, 重在快速上手使用, 只针对快速开发,所以我尽量用简洁 易懂的 文笔去阐述。

在一个公司里能运用手上的知识 快速的完成一个功能才是最好的,也可已根据自己的能力和时间 去选择是不是要深入的了解这些组件及功能。毕竟还是需要下班充电的。

当然我的文章 也会根据我对cocos2d-lua的了解程度 不断更新,完善,希望对你有用

综述:cocos2d-x lua API对XMLHttpRequest对象进行了移植,在cocos2d-x lua编程中可以利用此对象与web服务器进行数据的传输。

简述XMLHttpReques对象的属性和常用函数:

open() 与服务器链接,创建新的请求
send()向服务器发送请求
abort()退出当前请求
readyState属性。表示当前请求的就绪状态,其中4表示准备就绪
status属性,提供当前htp请求状态码,其中200表示成功请求
responseText属性,服务器返回的请求响应文本
onreadystatechange属性,设置回调函数,当服务器处理玩请求后,会自动调用该函数

关键:open和send函数以及onreadystatechange属性

open函数用到的参数:
request-type:发送请求的类型。一般发送GET或者POST,也可以发送HEAD
url:要连接的目标URL
asynch:是否需要异步链接,true或者false,默认是true(可选参数)
username:可选参数,用于身份验证
password:可选参数,用于身份验证

示例代码:

--此方法是一个请求服务器数据的回调
lcoal function touchCallBack(Sender)

local URL = ”要连接的服务器地址“
--请求服务器调用GetMobilePropertyType方法
local data = "action=GetMobilePropertyType"
local url = URL.."?"..data
--创建一个XMLHTTPREQUEST对象
local xhr = cc.XMLHttpRequest:new()
--设置应答类型为,应答返回的是json字符串,其他应答类型还有 XMLHTTPREQUEST_RESPONSE_ARRAY_BUFFER返回的是二进制数据XMLHTTPREQUEST_RESPONSE_STRING返回的是文本字符
xhr.responseType = cc.XMLHTTPREQUEST_RESPONSE_JSON
--与服务器链接创建请求
xhr.open("GET",url)
--服务器处理完数据后会调用此函数
  local function readSever()
    if  xhr.readyState == 4 and xhr.status == 200
    then
      -- 获得json格式的响应数据  需要解码
      lcoal responseData = xhr.response
        if responseData
         then
            --获取解码数据pcall返回两个值第一个值是true或false第二个值是解码后的数据
            ok, dataTable = pcall(
                --解码数据
                function() return json.decode(responseData)
              end)
              if not ok then
            print("onHttpJsionTable_cjson_error")
            dataTable  = nil
            end
          end
    end
  end
--注册请求服务器事件
xhr:registerScriptHandler(responseData )
--向服务器发送数据
xhr:send()
end


--此方法是一个向服务器提交数据的回调

local function addDataCallBack(sender)

local URL = ”要连接的服务器地址“
--请求服务器调用addData方法,将字段 name,age的内容添加到服务器的某个表中
local data = {"action":"addData","name":"lilei","age":23}
local encodeData = json.encode(data)

local xhr = cc.XMLHttpRequest:new()
xhr.responseType = cc.XMLHTTPREQUEST_RESPONSE_JSON
xhr.open("POST",URL )
  
  local function readServerData()
   
     if xhr.readyState == 4 and xhr.status ==200
      then
        local serverData = xhr.response
        if serverData
          then
           ok,dataTable = pcall(
            function() return json.decode(serverData)
              end) 
           end
      end
    end
xhr.registerScriptHandler(readServerData)
xhr.send(encodeData )
end
上一篇下一篇

猜你喜欢

热点阅读