中文字幕日韩精品一区二区免费_精品一区二区三区国产精品无卡在_国精品无码专区一区二区三区_国产αv三级中文在线

cocos2d-x學(xué)習(xí)筆記(七)利用curl獲取資源包的大小-創(chuàng)新互聯(lián)

    cocos2d-x將curl作為第三方庫加進(jìn)來,所以我們可以很方便的使用它。

創(chuàng)新互聯(lián)主營隆子網(wǎng)站建設(shè)的網(wǎng)絡(luò)公司,主營網(wǎng)站建設(shè)方案,手機(jī)APP定制開發(fā),隆子h5成都微信小程序搭建,隆子網(wǎng)站營銷推廣歡迎隆子等地區(qū)企業(yè)咨詢

    最近在研究資源熱更新,由于想在用戶更新之前提示資源包大小,讓用戶知道此次更新所需消耗流量,所以在資源熱更新AssetsManager類的基礎(chǔ)上加入獲取資源包大小的代碼。

    我用的是cocos2d-x 3.4的版本,AssetsManager源文件在cocos2d\extensions\assets-manager目錄下。

一、首先在AssetsManager.h文件class AssetsManager底下加入代碼

double _downloadLength; void loadHead(std::string _fileUrl);  void onThread(void* curl); double getDownloadLength();

二、AssetsManager.cpp加入代碼

size_t getHeader(void *ptr, size_t size, size_t nmemb, void *data) { return (size_t)(size * nmemb); } void AssetsManager::loadHead(std::string _fileUrl) { auto curl = curl_easy_init(); curl_easy_setopt(curl, CURLOPT_URL, _fileUrl.c_str()); curl_easy_setopt(curl, CURLOPT_CUSTOMREQUEST, "GET"); curl_easy_setopt(curl, CURLOPT_NOBODY, 1);//部分服務(wù)器可能不支持Header響應(yīng) curl_easy_setopt(curl, CURLOPT_HEADERFUNCTION, getHeader);//只需要獲取http頭像應(yīng) curl_easy_setopt(curl, CURLOPT_LOW_SPEED_LIMIT, LOW_SPEED_LIMIT); curl_easy_setopt(curl, CURLOPT_LOW_SPEED_TIME, LOW_SPEED_TIME); auto t = std::thread(&AssetsManager::onThread, this, curl); t.detach(); } void AssetsManager::onThread(void* curl) { CURLcode res; do { res = curl_easy_perform(curl); if(res != 0) { break; } else { CURLcode return_code; long retcode = 0; //狀態(tài)碼 return_code = curl_easy_getinfo(curl, CURLINFO_RESPONSE_CODE, &retcode); log("return_code:%ld", retcode); if((CURLE_OK != return_code) || !retcode) { break; } //響應(yīng)內(nèi)容長度 curl_easy_getinfo(curl, CURLINFO_CONTENT_LENGTH_DOWNLOAD, &_downloadLength); log("downLength:%f", _downloadLength); } } while (0); curl_easy_cleanup(curl); } double AssetsManager::getDownloadLength() { return _downloadLength; }

loadHead入口函數(shù),參數(shù)為資源包的url地址,getDownloadLength()為獲取到的資源包大小,當(dāng)然,由于計(jì)算資源包大小使用的是多線程,所以,如果你執(zhí)行完loadHead后接著執(zhí)行g(shù)etDownloadLength()有可能獲取的大小是0,因?yàn)橘Y源包大小還沒返回計(jì)算結(jié)果。如果不想用多線程,將以下代碼

auto t = std::thread(&AssetsManager::onThread, this, curl); t.detach();

改為:

onThread(curl);

即可

另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時(shí)售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價(jià)比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。

文章標(biāo)題:cocos2d-x學(xué)習(xí)筆記(七)利用curl獲取資源包的大小-創(chuàng)新互聯(lián)
文章地址:http://www.rwnh.cn/article30/copipo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供品牌網(wǎng)站建設(shè)、商城網(wǎng)站、微信小程序、網(wǎng)站改版、網(wǎng)站建設(shè)、品牌網(wǎng)站制作

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請(qǐng)盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請(qǐng)聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

h5響應(yīng)式網(wǎng)站建設(shè)
江源县| 柘城县| 馆陶县| 射阳县| 来凤县| 大埔区| 博湖县| 靖边县| 陆丰市| 永州市| 五大连池市| 通山县| 武邑县| 曲周县| 剑阁县| 荆门市| 康定县| 青神县| 海南省| 新密市| 博湖县| 海盐县| 南川市| 玉屏| 花莲市| 凤凰县| 宁城县| 通海县| 怀集县| 甘谷县| 钟祥市| 张家港市| 南涧| 秦皇岛市| 兰西县| 中宁县| 江都市| 渭南市| 盖州市| 温宿县| 三河市|