微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

cocos2d-x lua 使用http(下载图片, POST JSON)

cocos2d-x lua 使用http(下载图片,POST JSON)

version: cocos2d-x 3.6

1.使用http post json与服务器交互

require("src/cocos/cocos2d/json")
require("src/cocos/network/NetworkConstants")

-- post json
local xhr = cc.XMLHttpRequest:new()
xhr.responseType = cc.XMLHTTPREQUEST_RESPONSE_JSON
xhr:setRequestHeader("Content-Type","application/json")
xhr:open("POST","www.baidu.com")
local function loginCallback()
    print("xhr.readyState is:",xhr.readyState,"xhr.status is: ",xhr.status)
    if xhr.readyState == 4 and (xhr.status >= 200 and xhr.status < 207) then
        local response = xhr.response
        local output = json.decode(response)
        -- print
        table.foreach(output,function(i,v) print (i,v) end)

        -- success ...
    else
        -- fail ...
    end
end
xhr:registerScriptHandler(loginCallback)
xhr:send(sendJson)

2.使用http get下载网络图片

-- get (image)

pSprite:retain()  -- a sprite
local xhr = cc.XMLHttpRequest:new()

-- tag
xhr._urlFileName = urlFileName
xhr._urlSprite = pSprite

xhr.responseType = cc.XMLHTTPREQUEST_RESPONSE_STRING
xhr:open("GET","http://cocos2d-x.org/s/images/img-cocos2dx.jpg")
local function onDownloadImage()
    print("xhr.readyState is:",xhr.status)
    if xhr.readyState == 4 and (xhr.status >= 200 and xhr.status < 207) then
        local fileData = xhr.response
        local fullFileName = cc.FileUtils:getInstance():getWritablePath() .. "/" .. xhr._urlFileName
        local file = io.open(fullFileName,"wb")
        file:write(fileData)
        file:close()
        local texture2d = cc.Director:getInstance():getTextureCache():addImage(fullFileName)
        local pSprite = xhr._urlSprite
        if texture2d then
            pSprite:setTexture(texture2d)
        end
        pSprite:release() -- be careful
    end
end
xhr:registerScriptHandler(onDownloadImage)
xhr:send()
  • 在使用xhr时,可以添加自己的数据(如:xhr._urlSprite = pSprite),存放用户的临时数据,方便返回时使用。

原文地址:https://www.jb51.cc/cocos2dx/342761.html

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐