微信小游戏5.2.2 在子项目中使用EUI制作排行榜报错 wx.getFileSystemManager not function

本来想子项目(开放数据域)想使用EUI来制作排行榜。

原5.1.11的时候是ok的。在5.2.2中,使用assetsmananger而不是res,则会报错wx.getFileSystemManager not function。

 查找到这个报错是在egret.wxgame.js里

修改配置文件,将子项目的assetsmananger改成res,则这个报错消失。

但是即使使用res,也不能去加载default.res.json文件。

res仅仅能够让你能使用

let img:eui.Image = new eui.Image();

img.source = "resource/assets/bg.png";

如果使用assetsmananger,你连img.source = ""都会报错...

但是在主项目中使用assetsmanager则无问题。

那么我们可以在子项目中使用eui,仅仅加载皮肤主题,不加载default.res.json。

所以eui上的所有img的source,都要从主项目中以下面方式获取:

img.source = "resource/assets/xxx.png" 

resource/assets/xxx.png是主项目的资源路径

加载皮肤主题后,则可以使用eui来制作排行榜RankPanel

class Main extends eui.UILayer {

    protected createChildren(): void {
        super.createChildren();

    
        //inject the custom material parser
        //注入自定义的素材解析器
        let assetAdapter = new AssetAdapter();
        egret.registerImplementation("eui.IAssetAdapter", assetAdapter);
        egret.registerImplementation("eui.IThemeAdapter", new ThemeAdapter());

        let theme = new eui.Theme("resource/default.thm.json", this.stage);
        theme.addEventListener(eui.UIEvent.COMPLETE, this.onThemeLoadComplete, this);

    }

    private onThemeLoadComplete(){
        console.log("子项目加载皮肤完成");

        this.addChild(new RankPanel());
    }
}

RankPanel的所有img图片路径都得从主项目resource中获取  

class RankPanel extends eui.Component{
	public constructor() {
		super();
		this.skinName = "RankPanelSkin";
	}

	protected childrenCreated(){
		let img:eui.Image = new eui.Image();
		img.source = "resource/assets/login/ue2.png";
		this.addChild(img);
	}
}

  

猜你喜欢

转载自www.cnblogs.com/gamedaybyday/p/9196924.html