cocos2dx-lua http请求下载图片,使用XMLHttpRequest类
HttpFileDownLoadSimple.lua
local downloader = {}
--数据拆分,以没1024*5字节拆成一段,打包写入文件 (拆完再拼接,转成字符串)
local function getStrData(response)
local totalSize = table.getn(response)
local onePart = *
local partData = ""
local packTimes = math.floor(totalSize/onePart)
print("文件大小: : " , totalSize )
--print(" -- > pack size , times : " , totalSize , packTimes)
for i=,packTimes do
local partUnPack = string.char(unpack(response,+(i-)*onePart , i*onePart) )
partData = partData..partUnPack
--print(" -- > pack new part : " , 1+(i-1)*onePart , i*onePart)
end
--print(" -- > pack end part : " , packTimes*onePart+1 , totalSize)
local endUnpack = string.char(unpack(response , packTimes*onePart+ , totalSize) )
partData = partData..endUnpack
return partData
end
--下载图片
function downloader:DownLoadImage(url,saveName,callBack)
local xhr = cc.XMLHttpRequest:new()
xhr.responseType = cc.XMLHTTPREQUEST_RESPONSE_ARRAY_BUFFER
xhr:open("GET", url)
--self.callBack = callBack
local function onReadyStateChanged()
print("---------net--------- xhr.readyState xhr.status",xhr.readyState,xhr.status)
if xhr.readyState == and (xhr.status >= and xhr.status < ) then
print(" ---> 下载图片返回数据 : " , xhr.statusText )
local response = xhr.response
local strInfo = getStrData(response)
io.writefile("user/"..saveName, strInfo, "w+b")
--self:callback("down load ok" , saveName)
--self.
callBack(saveName)
else
print(" --- > error xhr.readyState is:", xhr.readyState, "xhr.status is: ",xhr.status)
self:callbackErr(xhr.readyState, xhr.status)
end
if xhr.status == then
print("xhr.readyState xhr.status",xhr.readyState,xhr.status)
--req.callback(code,fullFileName,req)
end
xhr:unregisterScriptHandler()
end
xhr:registerScriptHandler(onReadyStateChanged)
xhr:send()
end
cc.exports.HttpFileDownLoadSimple = downloader
return downloader
调用代码:
local list = {}
list[] = {id = ,url = "http://life.southmoney.com/tuwen/UploadFiles_6871/201809/20180925104703150.jpg"}
list[] = {id = ,url = "http://img.52z.com/upload/news/image/20180914/20180914034357_53554.jpg"}
function downCallBack(name)
print(name)
end
local u1 = list[]
local u2 = list[]
HttpFileDownLoadSimple:DownLoadImage(u1.url,"head"..u1.id..".jpg",downCallBack)
文件下载路径:(在代码里可以改)
运行目录或项目根目录 user 文件夹
cocos2dx-lua http请求下载图片,使用XMLHttpRequest类的更多相关文章
- cocos2d-x lua 使用http(下载图片, POST JSON)
cocos2d-x lua 使用http(下载图片, POST JSON) version: cocos2d-x 3.6 1.使用http post json与服务器交互 require(" ...
- 网络请求以及网络请求下载图片的工具类 android开发java工具类
package cc.jiusan.www.utils; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; ...
- Android开发之java代码工具类。判断当前网络是否连接并请求下载图片
package cc.jiusan.www.utils; import org.apache.http.HttpEntity; import org.apache.http.HttpResponse; ...
- cocos2dx lua 绑定之一:自动绑定自定义类中的函数
cococs2dx 3.13.1 + vs2013 + win10 1.首先定义C++类Student 在cocos2d-x\cocos文件夹下新建一个user_define的文件夹放置两个文件. 注 ...
- 【转】 COCOS2D-X之使用CURL下载图片的一个简单Demo
#include"curl/curl.h" #pragma comment(lib,"libcurl_imp.lib") bool HelloWorld::i ...
- cocos2dx lua 绑定之二:手动绑定自定义类中的函数
cococs2dx 3.13.1 + vs2013 + win10 1.首先按照<cocos2dx lua 绑定之一:自动绑定自定义类>绑定Student类 2.在Student类中增加一 ...
- java假设模拟请求重新启动路由器(网络爬虫经常使用),还有java怎样下载图片
我们假设在公司或家里使用网络爬虫去抓取自己索要的一些数据的时候,经常对方的站点有defence机制,会给你的http请求返回500错误,仅仅要是同样IP就请求不到数据,这时候我们仅仅能去重新启动路由器 ...
- iOS 通过网络请求获取图片的下载歌曲
1.导入代理<NSURLConnectionDataDelegate> @interface ViewController ()<NSURLConnectionDataDelegat ...
- 利用AssetsManager实现在线更新脚本文件lua、js、图片等资源(免去平台审核周期)
转自:http://www.himigame.com/iphone-cocos2dx/1354.html 首先说明一个问题: 为什么要在线更新资源和脚本文件!? 对于此问题,那要说的太多了,简单概括, ...
随机推荐
- mysql中explain的type的解释
type -- 连接类型 type意味着类型,这里的type官方全称是“join type”,意思是“连接类型”,这样很容易给人一种错觉觉得必须需要俩个表以上才有连接类型.事实上这里的连接类型并非字面 ...
- [Cordova inAppBrowser 在App内打开浏览器]
方案1: 使用Cordova插件 cordova-plugin-inappbrowser 1. 添加插件 cordova plugin add cordova-plugin-inappbrowser ...
- 题解 P2763 【试题库问题】
这题可以用网络流,但我用的是匈牙利算法 进入正题 设第个类型需要个.将每个类型拆成个点,用一个边集数组记录它拆成的点. 第个试题有个类型,分别将与拆成的点连边,这样便构成了一个二分图. 使用匈牙利算法 ...
- cocos 常用组件
前面的话 本文将详细介绍 cocos 中的常用组件 Sprite [概述] Sprite(精灵)是 2D 游戏中最常见的显示图像的方式,在节点上添加 Sprite 组件,就可以在场景中显示项目资源中的 ...
- AB PLC教程
把文档贴到Blog.BBS或个人站等: 复制 预览 普通尺寸(450*500pix) 较大尺寸(630*500pix)
- HBuilderX——编译失败:HBuilderX 安装目录不能包括 ( 等特殊字符
前言 编译小程序的时候报错,原因其实很简单,安装目录的问题! 解决 我安装到了D:\Program Files (x86),放到D盘的根目录下或者D:\Program Files只要不包含一些特殊字符 ...
- Linux系统扩容根目录磁盘空间的操作方法
问题描述 系统的服务无法正常运行,查看磁盘空间,发现根目录已经满了 解决过程 1.添加磁盘空间 2.使用fdisk -l命令查看磁盘信息 3.新建磁盘分区 4.使用fdisk /dev/sda3, 创 ...
- [SDOI2017]苹果树
题目描述 https://www.luogu.org/problemnew/show/P3780 题解 一道思路巧妙的背包题. 对于那个奇怪的限制,我们对此稍加分析就可以发现它最后选择的区域是一个包含 ...
- js-sha256源码
/** * [js-sha256]{@link https://github.com/emn178/js-sha256} * * @version 0.9.0 * @author Chen, Yi-C ...
- 如何安装多个mysql 或者如何更改mysql服务名
此教程适合免安装版本(压缩包)的mysql: 有的时候你需要一台计算机上安装不同的mysql版本,而不同版本的mysql服务名称都是mysql,安装时会有冲突 解决的办法就是安装的时候更改名字 在命令 ...