Egret社区
微信小游戏的游戏资源有更新,想要删除缓存,但不晓得怎么下手,fileutil.fs.remove()没法直接调用,而且wx.updateManager 好像也不管用?朋友们,如何解决啊?
分享到 :
0 人收藏

6 个回复

倒序浏览
zhangyiyun  登堂入室 | 2018-6-13 17:24:14
直接在 ${projectName}_wxgame/library/image.js 中修改加载策略
yanleiyu  登堂入室 | 2018-6-13 17:28:14
zhangyiyun 发表于 2018-6-13 17:24
直接在 ${projectName}_wxgame/library/image.js 中修改加载策略

请问怎么做? 能具体说下吗  
zhangyiyun  登堂入室 | 2018-6-13 17:32:19
yanleiyu 发表于 2018-6-13 17:28
请问怎么做? 能具体说下吗

你打开 image.js 以及 assetsmanager.js 看源码就能明白了
zhangyiyun  登堂入室 | 2018-6-13 17:33:39
yanleiyu 发表于 2018-6-13 17:28
请问怎么做? 能具体说下吗

assetsmanager.js 是调用 image.js 的地方
xiongjian  初窥堂奥 | 2018-6-13 17:58:17
zhangyiyun 发表于 2018-6-13 17:33
assetsmanager.js 是调用 image.js 的地方

好像不对哦,资源以及缓存到本地了,然后希望下次更新包的时候把资源替换掉,如果直接改加载策略里的删除,那么小游戏每次重启都会删除资源,然后重新下载
xiongjian  初窥堂奥 | 2018-6-14 10:08:00
把官方的file_util.js复制改成ts了 ,解压的函数报错,我直接删除了,   如果wx的方法报错,请自行往wx_mini_game.d.ts里加,亲测有效
/**
* 封装微信小游戏的文件系统
*/
const wxFs = wx.getFileSystemManager();
const WX_ROOT = wx.env.USER_DATA_PATH + "/";

function walkFile(dirname, callback) {
    const files = wxFs.readdirSync(dirname)
    for (let f of files) {
        const file = dirname + "/" + f;
        const stat = wxFs.statSync(file);
        if (stat.isDirectory()) {
            walkFile(file, callback);
        } else {
            callback(file)
        }
    }
}


function walkDir(dirname, callback) {
    const files = wxFs.readdirSync(dirname)
    for (let f of files) {
        const file = dirname + "/" + f;
        const stat = wxFs.statSync(file);
        if (stat.isDirectory()) {
            walkDir(file, callback);
            callback(file)
        }
    }
}

let fs_cache = {};

namespace fileUtils {

    export const fs = {

        /**
         * 遍历删除文件夹
         */
        remove: (dirname) => {
            window["fs_cache"] = fs_cache = {};
            dirname = WX_ROOT + "/" + dirname;
            walkFile(dirname, (file) => {
                wxFs.unlinkSync(file)
            })
            walkDir(dirname, (dir) => {
                wxFs.rmdirSync(dir)
            })
        },

        /**
         * 检查文件是否存在
         */
        existsSync: (p) => {
            const cache = fs_cache[p];
            if (cache == 0) {
                return false;
            }
            else if (cache == 1) {
                return true;
            }
            else {
                try {
                    wxFs.accessSync(WX_ROOT + p);
                    fs_cache[p] = 1;
                    return true;
                }
                catch (e) {
                    fs_cache[p] = 0;
                    return false;
                }
            }

        },


        writeSync: (p, content) => {
            fs_cache[p] = 1;
            wxFs.writeFileSync(WX_ROOT + p, content);
        },

        readSync: (p) => {
            return wxFs.readFileSync(WX_ROOT + p, 'utf-8');
        },

        /**
         * 创建文件夹
         */
        mkdirsSync: (p) => {
            console.log(`mkdir: ${p}`)
            const time1 = Date.now();

            if (!fs.existsSync(p)) {
                const dirs = p.split('/');
                let current = "";
                for (let i = 0; i < dirs.length; i++) {
                    const dir = dirs[i]
                    current += dir + "/";
                    if (!fs.existsSync(current)) {
                        console.log(fs_cache[current])
                        fs_cache[current] = 1;
                        wxFs.mkdirSync(WX_ROOT + current)

                    }
                }
            }
            const time2 = Date.now() - time1;
            console.log(`mkdir: ${p} ${time2} ms`)
        }

    }

    export const path = {

        dirname: (p) => {
            const arr = p.split("/");
            arr.pop();
            return arr.join('/');
        },


        isRemotePath: (p) => {
            return p.indexOf("http://") == 0 || p.indexOf("https://") == 0;
        }

    }
}


window["fs_cache"] = fs_cache;
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|京网文[2014]0791-191号|京ICP证150115号|Egret社区 ( 京ICP备14025619号

Powered by Discuz! X3.2 © 2001-2016 Comsenz Inc.

返回顶部