最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

Cocos Creator如何讀寫本地文件

2020-08-07 16:26 作者:博毅創(chuàng)為  | 我要投稿

前言

一、使用localStorage存儲(chǔ)和讀取本地文件

1. 常用API

存儲(chǔ):cc.sys.localStorage.setItem(key, value);
兩個(gè)參數(shù),用來索引的字符串鍵值 key,和要保存的字符串?dāng)?shù)據(jù) value。

讀?。?/strong>cc.sys.localStorage.getItem(key);
一個(gè)參數(shù),只需要根據(jù)key來讀取相應(yīng)的值。

刪除:cc.sys.localStorage.removeItem(key);
移除一個(gè)存儲(chǔ)的值后,無法再讀取。

這種處理方式,類似Java中的Map。

2. 簡單案例

cc.sys.localStorage.setItem(key, value)
上面的方法需要兩個(gè)參數(shù),用來索引的字符串鍵值 key,和要保存的字符串?dāng)?shù)據(jù) value。

假如我們要保存玩家持有的金錢數(shù),假設(shè)鍵值為 gold:

cc.sys.localStorage.setItem('gold', 100);

對(duì)于復(fù)雜的對(duì)象數(shù)據(jù),我們可以通過將對(duì)象序列化為 JSON 后保存:

userData = { ? ?name: 'Tracer', ? ?level: 1, ? ?gold: 100 };

cc.sys.localStorage.setItem('userData', JSON.stringify(userData));
和 setItem 相對(duì)應(yīng),getItem 方法只要一個(gè)鍵值參數(shù)就可以取出我們之前保存的值了。對(duì)于上文中儲(chǔ)存的用戶數(shù)據(jù):

var userData = JSON.parse(cc.sys.localStorage.getItem('userData'));

3.數(shù)據(jù)加密

對(duì)于單機(jī)游戲來說,對(duì)玩家存檔進(jìn)行加密可以延緩游戲被破解的時(shí)間。要加密存儲(chǔ)數(shù)據(jù),只要在將數(shù)據(jù)通過JSON.stringify 轉(zhuǎn)化為字符串后調(diào)用你選中的加密算法進(jìn)行處理,再將加密結(jié)果傳入 setItem 接口即可。
您可以搜索并選擇一個(gè)適用的加密算法和第三方庫,比如 encryptjs, 將下載好的庫文件放入你的項(xiàng)目,存儲(chǔ)時(shí):

var encrypt=require('encryptjs');var secretkey= 'open_sesame'; // 加密密鑰 var dataString = JSON.stringify(userData);var encrypted = encrypt.encrypt(dataString,secretkey,256); cc.sys.localStorage.setItem('userData', encrypted);

讀取時(shí):

var cipherText = cc.sys.localStorage.getItem('userData');var userData=JSON.parse(encrypt.decrypt(cipherText,secretkey,256));

注意 數(shù)據(jù)加密不能保證對(duì)用戶檔案的完全掌控,如果您需要確保游戲存檔不被破解,請(qǐng)使用服務(wù)器進(jìn)行數(shù)據(jù)存取。

二、使用jsb.fileUtils

1.常用API

jsb是javascript bind的代表,整個(gè)C/C++ 導(dǎo)出的綁定都在這個(gè)jsb里面,jsb 支持native,不支持h5(瀏覽器上無法運(yùn)行jsb is not defined )。而且fileUtils是本地文件讀寫的一個(gè)工具類,全局只有一個(gè)實(shí)例。



2.簡單案例

cc.Class({ ? ?extends: cc.Component, ? ?onLoad() { ? ? ? ?// jsb.fileUtils獲取全局的工具類的實(shí)例, cc.director; ? ? ? ?// 如果是在電腦的模擬器上,就會(huì)是安裝路徑下模擬器的位置; ? ? ? ?// 如果是手機(jī)上,那么就是手機(jī)OS為這個(gè)APP分配的可以讀寫的路徑; ? ? ? ?// jsb --> javascript binding --> jsb是不支持h5的 ? ? ? ?var writeable_path = jsb.fileUtils.getWritablePath(); ? ? ? ?console.log(writeable_path); ? ? ? ? ?// 要在可寫的路徑先創(chuàng)建一個(gè)文件夾 ? ? ? ?var new_dir = writeable_path + "new_dir"; ? ? ? ?// 路徑也可以是 外部存儲(chǔ)的路徑,只要你有可寫外部存儲(chǔ)的權(quán)限; ? ? ? ?// getWritablePath這個(gè)路徑下,會(huì)隨著我們的程序卸載而刪除,外部存儲(chǔ)除非你自己刪除,否者的話,卸載APP數(shù)據(jù)還在; ? ? ? ?if(!jsb.fileUtils.isDirectoryExist(new_dir)) { ? ? ? ? ? ?jsb.fileUtils.createDirectory(new_dir); ? ? ? ?} else { ? ? ? ? ? ?console.log("dir is exist!!!"); ? ? ? ?} ? ? ? ? ? ? ? ?// 讀寫文件我們分兩種,文本文件, 二進(jìn)制文件; ? ? ? ?// (1)文本文件的讀,返回的是一個(gè)string對(duì)象 ? ? ? ?var str_data = jsb.fileUtils.getStringFromFile(new_dir + "/test_str_read.txt"); ? ? ? ?console.log(str_data); ? ? ? ?str_data = "hello test_write !!!!!" ? ? ? ?jsb.fileUtils.writeStringToFile(str_data, new_dir + "/test_str_write.txt"); ? ? ? ?// (2)二進(jìn)制文件的讀寫, Uint8Array --> js對(duì)象 ? ? ? ?var bin_array = jsb.fileUtils.getDataFromFile(new_dir + "/test_bin_read.png"); ? ? ? ?console.log(bin_array[0], bin_array[1]); // 使用這個(gè)就能訪問二進(jìn)制的每一個(gè)字節(jié)數(shù)據(jù); ? ? ? ?jsb.fileUtils.writeDataToFile(bin_array, new_dir + "/test_bin_write.png"); ? ? ? ?// end ? ? ? ?// 刪除文件和文件夾 ? ? ? ?// jsb.fileUtils.removeFile(new_dir + "/test_bin_write.png"); ? ? ? ?// jsb.fileUtils.removeDirectory(new_dir); ? ?}, });

三、瀏覽器環(huán)境下寫文件

由于CocosCreator官方文檔中沒有提供跨平臺(tái)的通用寫文件接口。如果運(yùn)行環(huán)境是瀏覽器,有一個(gè)替代方案可以實(shí)現(xiàn)把內(nèi)容保存到文件,效果相當(dāng)于下載了一個(gè)文件到本地。代碼如下:

// 保存字符串內(nèi)容到文件。// 效果相當(dāng)于從瀏覽器下載了一個(gè)文件到本地。// textToWrite - 要保存的文件內(nèi)容// fileNameToSaveAs - 要保存的文件名saveForBrowser(textToWrite, fileNameToSaveAs) { ? ?if (cc.sys.isBrowser) { ? ? ? ?console.log("瀏覽器"); ? ? ? ?let textFileAsBlob = new Blob([textToWrite], {type:'application/json'}); ? ? ? ?let downloadLink = document.createElement("a"); ? ? ? ?downloadLink.download = fileNameToSaveAs; ? ? ? ?downloadLink.innerHTML = "Download File"; ? ? ? ?if (window.webkitURL != null){ ? ? ? ? ? ?// Chrome allows the link to be clicked ? ? ? ? ? ?// without actually adding it to the DOM. ? ? ? ? ? ?downloadLink.href = window.webkitURL.createObjectURL(textFileAsBlob); ? ? ? ?}else{ ? ? ? ? ? ?// Firefox requires the link to be added to the DOM ? ? ? ? ? ?// before it can be clicked. ? ? ? ? ? ?downloadLink.href = window.URL.createObjectURL(textFileAsBlob); ? ? ? ? ? ?downloadLink.onclick = destroyClickedElement; ? ? ? ? ? ?downloadLink.style.display = "none"; ? ? ? ? ? ?document.body.appendChild(downloadLink); ? ? ? ?} ? ? ? ?downloadLink.click(); ? ?} }

四、Cocos Creator 讀寫本地的json文件

關(guān)于Cocos Creator讀寫本地json文件,我們單獨(dú)給大家寫一篇文章專門做介紹!


Cocos Creator如何讀寫本地文件的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國家法律
耿马| 沈阳市| 木兰县| 龙口市| 虹口区| 原平市| 安丘市| 鄂州市| 镇江市| 惠水县| 涿鹿县| 安新县| 沭阳县| 中方县| 凤城市| 金溪县| 施秉县| 渭南市| 娱乐| 中西区| 广平县| 安福县| 友谊县| 吉首市| 顺义区| 汕尾市| 六安市| 营山县| 桃江县| 义乌市| 岑溪市| 石门县| 车致| 诸暨市| 武平县| 阿合奇县| 阿拉尔市| 怀远县| 浮山县| 习水县| 从化市|