Egret社区

二次或者多次加载资源bug

2014-12-16 19:07
478215

分享到 :
0 人收藏

15 个回复

倒序浏览
dom  圆转纯熟 | 2014-12-16 19:32:36
这个是设计如此,因为你启动组加载前是可以调用RES.isGroupLoaded()这个方法立即判断出来组是否已经加载完成的。都已经知道组是加载过的再启动加载就没意义了,你要是有循环加载的组,可以通过那个方法判断一下再启动。
innocentjulie  圆转纯熟 | 2014-12-17 09:42:14
dom 发表于 2014-12-16 19:32
这个是设计如此,因为你启动组加载前是可以调用RES.isGroupLoaded()这个方法立即判断出来组是否已经加载完 ...

就算是你们设计如此,第二次加载难道就不会给用户任何提示?还有我如果是相同的组,但是组里面的资源不一样,isGroupLoaded判断是否已经加载完成呢还是会加载新资源?不给任何提示,再用户看来就是功能缺陷
innocentjulie  圆转纯熟 | 2014-12-17 11:14:02
如果动态创建的资源完全跟上次加载相同的话,isGroupLoaded 返回true?
如果资源组的内容不同,isGroupLoaded 返回false?
dom  圆转纯熟 | 2014-12-17 13:02:58
innocentjulie 发表于 2014-12-17 11:14
如果动态创建的资源完全跟上次加载相同的话,isGroupLoaded 返回true?
如果资源组的内容不同,isGroupLoade ...

createGroup创建资源组的时候,有个override是否覆的参数,传入true才能覆盖已经存在的资源组,一个组名只能对应一个组。如果第二次创建的覆盖了第一次原先的组,那isGroupLoaded返回的是false。这个接口是可靠的,没有问题。
dom  圆转纯熟 | 2014-12-17 13:04:59
innocentjulie 发表于 2014-12-17 09:42
就算是你们设计如此,第二次加载难道就不会给用户任何提示?还有我如果是相同的组,但是组里面的资源不一 ...

关于没有提示的问题。这个可以优化。改成控制台输出一个warning:要启动加载的资源组已经是加载完成的。
innocentjulie  圆转纯熟 | 2014-12-17 13:16:09
dom 发表于 2014-12-17 13:02
createGroup创建资源组的时候,有个override是否覆的参数,传入true才能覆盖已经存在的资源组,一个组名 ...

但是我测试的时候override是true,第二次加载的资源跟第一次加载的资源一样的话,isGroupLoaded返回的是true,系统设定是这样的么。。。
dom  圆转纯熟 | 2014-12-17 13:20:19
innocentjulie 发表于 2014-12-17 13:16
但是我测试的时候override是true,第二次加载的资源跟第一次加载的资源一样的话,isGroupLoaded返回的是tr ...

[mw_shl_code=applescript,true] public createGroup(name:string,keys:Array<string>,override:boolean=false):boolean{
            if(override){
                var index:number = this.loadedGroups.indexOf(name);
                if(index!=-1){
                    this.loadedGroups.splice(index,1);
                }
            }
            return this.resConfig.createGroup(name,keys,override);
        }[/mw_shl_code]
这里是createGroup的代码。你传入的override如果真的是true的,会从loadedGroup里移除那个组名。请再测试一下确认问题是否存在。
innocentjulie  圆转纯熟 | 2014-12-17 14:00:41
本帖最后由 innocentjulie 于 2014-12-17 14:01 编辑
dom 发表于 2014-12-17 13:20
[mw_shl_code=applescript,true] public createGroup(name:string,keys:Array,override:boolean=false):b ...

我第二次加载相同的资源的时候,测试如下
console.log(RES.isGroupLoaded("role_load"));
        RES.createGroup("role_load",["bgImage2"],true);
        console.log(RES.isGroupLoaded("role_load"));
        RES.loadGroup( "role_load");
        console.log(RES.isGroupLoaded("role_load"));
输出为true,false,true,也就是只要重复加载时调用loadGroup后马上变成true,而不是派发出complete事件,任何监听都没用,只能用RES.isGroupLoaded来判断重复资源是否加载完成,而不仅仅在complete事件里面加判断
dom  圆转纯熟 | 2014-12-17 14:17:46
innocentjulie 发表于 2014-12-17 14:00
我第二次加载相同的资源的时候,测试如下
console.log(RES.isGroupLoaded("role_load"));
        RES.cr ...

我这边测试了是没问题的。请上传一个能重现第二次加载会导致监听无效的简单demo。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

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

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

返回顶部