Egret社区

RES.getResByUrl怎么用不了

2018-7-25 14:29
661222
3银子
本帖最后由 SlowFeather 于 2018-7-25 14:31 编辑

前段时间因为项目需求非要让我搞进入游戏之前的Loading图,就没研究白鹭自带的LoadingUI(之前是自己用html+js在index.html里写了个进度条……在进入第一个场景的时候把进度条隐藏……),所以我想问……RES.getResByUrl怎么用啊???
大家都知道Main函数这里

TIM截图20180725113411.png



但是这个位置并没有开始加载“resource/default.res.json”,而LoadingUI又是出现在这之前……所以想要在LoadingUI中显示图片……好像只有两种办法

  • RES.getResByUrl
    通过URL从服务器上加载一张图片
  • 在加载完

    RES.loadConfig("resource/default.res.json", "resource/");

    RES.loadGroup("myGroup", 0, loadingView);

    等待资源组加载完毕后显示LoadingUI


这两种方法我更倾向于第一种,在使用过程中发现并不能如愿以偿的加载一张图片

1.在LoadingUI中使用,发现报错

TIM截图20180725115012.png

TIM截图20180725114713.png

2.于是跑到官网的编辑器中运行一下试试……发现没问题啊

TIM截图20180725115129.png

3.难道是我用错位置了???放到Main.ts里运行一下……

TIM截图20180725114713.png

看到提示了!!!

https://github.com/egret-labs/resourcemanager/blob/master/docs/README.md#processor

4.好吧,官网的解释并不能看懂……那有没有大神跟我说说怎么设置……

TIM截图20180725133913.png

游客,如果您要查看本帖隐藏内容请回复




分享到 :
1 人收藏

22 个回复

倒序浏览
路迷在海  登堂入室 | 2018-7-25 15:36:33
RES.getResByUrl要放在
            await RES.loadConfig("resource/default.res.json", "resource/");
后面,官网那个应该不是最新版本吧,
SlowFeather  登堂入室 | 2018-7-25 17:52:13
路迷在海 发表于 2018-7-25 15:36
RES.getResByUrl要放在
            await RES.loadConfig("resource/default.res.json", "resource/");
后 ...

看第三条,试验过了,提示了官网的解释……按照官网的解决依旧不行……可能是我看不懂官网说了啥……
山猫  初窥堂奥 | 2018-7-25 18:12:23
[mw_shl_code=applescript,true]class LoadingUI extends egret.Sprite implements RES.PromiseTaskReporter {

    public constructor() {
        super();
        this.createView();
        this.addEventListener(egret.Event.ADDED_TO_STAGE,this.onAdd,this);
        this.addEventListener(egret.Event.REMOVED_FROM_STAGE,this.onRemove,this);
   
    }
    private onAdd(){
        this.width=this.stage.stageWidth;
        this.height=this.stage.stageHeight;
        this.addEventListener(egret.Event.ENTER_FRAME,this.onFrame,this)
    }
    private onRemove(){
        if(this.hasEventListener(egret.Event.ENTER_FRAME)){
            this.removeEventListener(egret.Event.ENTER_FRAME,this.onFrame,this)
        }
    }
    private onFrame(){
        if(this.bt){
            this.bt.rotation+=5
        }
    }
    private textField: egret.TextField;
    private bt:egret.Bitmap;

    private createView(): void {
        RES.getResByUrl('resource/assets/art/loading/loading2.png',(data,url)=>{
            this.bt=new egret.Bitmap();
            this.bt.texture=data;
            this.bt.anchorOffsetX=this.bt.width/2;
            this.bt.anchorOffsetY=this.bt.height/2
            this.bt.x=this.width/2;
            this.bt.y=this.height/2;
            this.addChild(this.bt);
        
            this.textField = new egret.TextField();
            this.addChild(this.textField);

            this.textField.width=this.bt.width;
            this.textField.height=this.bt.height;
            this.textField.anchorOffsetX=this.textField.width/2;
            this.textField.anchorOffsetY=this.textField.height/2;           
            this.textField.y =this.height/2;
            this.textField.x =this.width/2;
            this.textField.width = this.bt.width;
            this.textField.height = this.bt.height;
            this.textField.textAlign = egret.HorizontalAlign.CENTER;
            this.textField.verticalAlign=egret.VerticalAlign.MIDDLE;
            this.textField.size=16;
        }, this,RES.ResourceItem.TYPE_IMAGE)
    }

   public onProgress(current: number, total: number): void {
        this.textField.text = `Loading...${current}/${total}`;
    }
}
[/mw_shl_code]
Nasus  初窥堂奥 | 2018-7-25 18:14:47
6e884572f3a3920a6c0a97624395249.png
请参考我这个写法,加载完资源文件先后加载Loading要用的素材
山猫  初窥堂奥 | 2018-7-25 18:15:53
private async loadResource() {
        try {
           
            await RES.loadConfig("resource/default.res.json", "resource/");
            await this.loadTheme();
            const loadingView = new LoadingUI();
            this.stage.addChild(loadingView);
            await RES.loadGroup("preload", 0, loadingView);
            this.stage.removeChild(loadingView);
        }
        catch (e) {
            console.error(e);
        }
    }
上面是LoadingUI写的
这个是Main.ts里写的,
你研究一下
a18050123231  圆转纯熟 | 2018-7-25 19:54:17
另外新建一个组,存上loading要用的资源,加载了配置文件以后加载loading资源组,不要回调,然后再加载游戏资源,这里面回调显示loading页面,显示进度,loading里面资源越小越少出现的越快,loading组加载完之前就是灰屏
SlowFeather  登堂入室 | 2018-7-26 10:32:08
山猫 发表于 2018-7-25 18:12
[mw_shl_code=applescript,true]class LoadingUI extends egret.Sprite implements RES.PromiseTaskReporte ...

这样依旧不行,RES.getResByUrl无论是加载服务器资源还是加载本地资源好像都成问题
SlowFeather  登堂入室 | 2018-7-26 10:38:00
Nasus 发表于 2018-7-25 18:14
请参考我这个写法,加载完资源文件先后加载Loading要用的素材

那……这样网络慢的话会看到你第一行创建LoadingUI出现了……但是图片没加载出来,而且Loading的初始化方法也触发了……不就又报错了
SlowFeather  登堂入室 | 2018-7-26 10:41:15
a18050123231 发表于 2018-7-25 19:54
另外新建一个组,存上loading要用的资源,加载了配置文件以后加载loading资源组,不要回调,然后再加载游戏 ...

额……好像是个办法,但是我想知道加载这个新组以及配置文件(这个时间可能会长一点吧?)的时间会不会太久?
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

Powered by Discuz! X3.4 © 2001-2019 Comsenz Inc.

返回顶部