请教下1.3版本中cc.loader.onProgress

1.3版本中cc.loader.onProgress这个监控不到每个资源的加载了啊,都是全部加载完成才调用,无法监控加载进度了

之前是在项目中用自己的函数替换到这个函数地址实现的场景资源加载进度监控,现在不行了,都是加载完了才调用

看了下源码:

LoadingItems.create = function (pipeline, urlList, onProgress, onComplete) {
if (onProgress === undefined) {
if (typeof urlList === ‘function’) {
onComplete = urlList; //此处将进度函数换成了全部完成才调用了
urlList = onProgress = null; //清空了进度函数
}
}

请问下现在该怎么去监控加载进度呢?

麻烦发一下你的用法

你看的源码是 LoadingItems 的,这里是为了兼容多种参数形式:

cc.LoadingItems.create( loader, onComplete ); // 你截图中走的路径
cc.LoadingItems.create( loader, onProgress, onComplete );
cc.LoadingItems.create( loader, urlList, onComplete );
cc.LoadingItems.create( loader, onProgress, onComplete )

如果想要 Loader 的 onProgress 生效,可以按下面的用法:

// 第一种用法:onProgress 会在所有后续 load( res, onComplete ) 调用中作为进度函数回调
cc.loader.onProgress = function () {}
cc.loader.load( res, onComplete );

// 第二种用法:onProgress 只会在本次加载中回调
cc.loader.load( res, onProgress, onComplete ); 
1赞

我在一个loading场景脚本的onload里面调用了
cc.loader.onProgress = function () {}(我的函数)
然后调用了
cc.director.preloadScene()
我希望我的函数能得到预加载的进度,而不是只是加载完成之后才回调,之前1.22这么做是可以的,现在不行了,都是加载完成才回调我设置的cc.loader.onProgress

或者就教我怎么监听preloadScene的加载进度吧,这个只有一个加载完成,中间等得时间太长了,没个进度,用户体验不好

我测试一下吧

好的 谢谢:slightly_smiling:

同样问题,所有东西加载完了才会调用,用法如下图:

cc.Loader.js中flowInDeps函数
var queue = LoadingItems.create(this,this.onProgress(此处原本没有),function (errors, items) {
callback(errors, items);
// Clear deps because it’s already done
// Each item will only flowInDeps once, so it’s still safe here
owner && (owner.deps.length = 0);
items.destroy();
});
加上这句this.onProgress后就能正常获取进度了

是这样 之前onprogress可以直接监听到loadscene加载场景所有资源的时候的回调显示进度 现在我放到服务器是每个单个资源加载完会回调一次onprogress 获取不了总数目 而且不知道为什么我直接creator调试的时候就没有调用我的Onprogress 有creator自己的一个log 但是放到服务器上是可以触发的 其实就是麻烦给一个Preloadscene或者loadscene的进度监听的方法

问题我确认了,会尽快修复

大哥辛苦辛苦了。我这还有个奇怪的问题,就是编辑器每次编译代码后,有些场景里面的图就不显示了,黑了,仅仅只是在编辑器里面这样,要重新加载下编辑器才会正常

问题修复了,跟 1.2 一样使用 cc.loader.onProgress 来监听即可,可以等待下一个 1.3.x 版本或者自己手动修复

https://github.com/cocos-creator/engine/pull/1247

辛苦啦~ 直接修改resources中的代码就可以了么?

直接修改 engine 里面的代码,然后需要执行 gulp build

改 resources 我没试过,最好是 fork 引擎,按照定制的思路来做: http://cocos.com/docs/creator/advanced-topics/engine-customization.html

好的 多谢啦

怎么获取加载场景时的进度的啊?

现在有监听Preloadscene或者loadscene的进度的方法了吗