执行start()时onLoad()里面的资源还没加载完成,这正常么?

按照官方文档的说明,onLoad在start之前执行。然而我做的时候,出现这么一个情况:我在onload里通过initData方法加载了一个1KB的JSON文件,然后我想在start里打印一下这个文件的内容测试下自己写的代码是否正常,结果提示我undefined。于是我加了一个按钮,在点击那个按钮之后再打印测试,就可以正常打印了。打印的代码没改,只是挪了调用的地方。

这个现象似乎是在执行start的时候,onLoad还没有完成JSON的加载,这好像和官方说明不一致啊?有大神或者官方知道是怎么回事么?这样我对加载资源该怎么处理就有点方了,原来想的是都在onload里加载,start里做跟加载的资源相关的初始化,现在这样的话,好像这样就不稳了。

  • Creator 版本: 2.4.3

加载是异步的

loadJson是异步的,onLoad 方法执行完了,但是异步加载还没有完成,这时候start执行了就会有这种情况了,start 不是异步加载回调,测试打印应该在load回调中就没问题了

load回调指的是?

onload 和 start是生命周期,你加载文件是异步的,程序已经执行了,但至于你有没有加载完是不管的,程序继续执行到start。这个基础还是要补一补的,比如你1G的文件,程序不可能停下来等你加载完再执行,那直接卡死了

关键是对资源的处理,这样的机制的话,对于在onload中被加载的资源的处理,请问下大佬,应该是在哪里是稳妥的?

是要自己写个东西来监听是否加载结束么?

你肯定要写个加载完成的回调,不然没人知道它什么时候加载好,甚至是加载不成功

资源加载后都有回调,相应逻辑在回调里执行。比方一些游戏的登录加载场景,就是全部资源加载完了,才能进入游戏场景。

明白了,谢谢各位大佬