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

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

Cocos Creator如何讀寫本地文件

2022-03-07 20:35 作者:BYCW丶幻彩  | 我要投稿

前言

一、使用localStorage存儲和讀取本地文件

1. 常用API

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

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

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

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

2. 簡單案例

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

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

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

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

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

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

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

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

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

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);

讀取時:

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

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

二、使用jsb.fileUtils

1.常用API

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




2.簡單案例

cc.Class({ ? ?extends: cc.Component, ? ?onLoad() { ? ? ? ?// jsb.fileUtils獲取全局的工具類的實例, cc.director; ? ? ? ?// 如果是在電腦的模擬器上,就會是安裝路徑下模擬器的位置; ? ? ? ?// 如果是手機上,那么就是手機OS為這個APP分配的可以讀寫的路徑; ? ? ? ?// jsb --> javascript binding --> jsb是不支持h5的 ? ? ? ?var writeable_path = jsb.fileUtils.getWritablePath(); ? ? ? ?console.log(writeable_path); ? ? ? ? ?// 要在可寫的路徑先創(chuàng)建一個文件夾 ? ? ? ?var new_dir = writeable_path + "new_dir"; ? ? ? ?// 路徑也可以是 外部存儲的路徑,只要你有可寫外部存儲的權限; ? ? ? ?// getWritablePath這個路徑下,會隨著我們的程序卸載而刪除,外部存儲除非你自己刪除,否者的話,卸載APP數(shù)據(jù)還在; ? ? ? ?if(!jsb.fileUtils.isDirectoryExist(new_dir)) { ? ? ? ? ? ?jsb.fileUtils.createDirectory(new_dir); ? ? ? ?} else { ? ? ? ? ? ?console.log("dir is exist!!!"); ? ? ? ?} ? ? ? ? ? ? ? ?// 讀寫文件我們分兩種,文本文件, 二進制文件; ? ? ? ?// (1)文本文件的讀,返回的是一個string對象 ? ? ? ?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)二進制文件的讀寫, Uint8Array --> js對象 ? ? ? ?var bin_array = jsb.fileUtils.getDataFromFile(new_dir + "/test_bin_read.png"); ? ? ? ?console.log(bin_array[0], bin_array[1]); // 使用這個就能訪問二進制的每一個字節(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官方文檔中沒有提供跨平臺的通用寫文件接口。如果運行環(huán)境是瀏覽器,有一個替代方案可以實現(xiàn)把內(nèi)容保存到文件,效果相當于下載了一個文件到本地。代碼如下:

// 保存字符串內(nèi)容到文件。 // 效果相當于從瀏覽器下載了一個文件到本地。 // 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文件

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


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

分享到微博請遵守國家法律
新津县| 武山县| 万盛区| 东台市| 安图县| 固镇县| 诏安县| 汶上县| 阳江市| 杂多县| 满洲里市| 克什克腾旗| 宜丰县| 莲花县| 宜兰县| 海城市| 绥中县| 兰溪市| 柯坪县| 凉山| 莫力| 宝清县| 元阳县| 商洛市| 延安市| 富源县| 道孚县| 嵩明县| 三台县| 青神县| 增城市| 金乡县| 宝兴县| 蒙自县| 昭平县| 华安县| 凤山县| 通化市| 焉耆| 伊宁市| 万山特区|