项目中我们用 CCHttpClient来下载资源文件,但网络不稳定的时候,下载很慢,因此新需求产生:要求下载时实时显示当前下载速度。
cocos2d-x的CCHttpClient并没有提供这样的功能,ASIHTTPRequest提供了这样的功能(实际上,它拥有更多强大的功能,诸如断点续传等),ASIHTTPRequest是一个Objc类库,这意味着做跨平台移植时,ASIHTTPRequest完全无用了,所以,我想到的就是修改2dx引擎相关部分的代码。
分析得知,如果能实时获得一个文件的已下载字节数,我们就能通过两次下载字节数的差值来计算出当前下载速度。
HttpClient.cpp文件
writeData方法由curl来调用,当http返回字节数据时,该方法促发,它用于向CCHttpResponse 写入数据,所以,这里的recvBuffer实际上就是已下载的文件数据,recvBuffer->size()就是下载的字节数 ,问题到此基本解决