美文网首页
cocos creator onload的执行顺序

cocos creator onload的执行顺序

作者: 自傷無色 | 来源:发表于2018-08-07 00:36 被阅读920次

    今天做项目时,在onload内写东西,我在a.js的onload里定义了变量var1,b.js的onload里调用了a的一个方法func1,而func1中又使用到了var1,于是运行的时候提示var1没有定义,我不是在onload里定义了吗?在上面打算断点,结果没有走进来,直接就去func1里用var1,我怀疑可能是它们的onload有个先后执行的顺序,于是在层级管理中把他们换了一个位置,果然就好了。
    之所以这么怀疑,是因为官方文档中有写到过:

    节点在列表中的排序决定了节点在场景中的显示次序。在层级管理器中显示在下方的节点的渲染顺序是在上方节点的后面,即下方的节点是在上方节点之后绘制的,因而最下方的节点在 场景编辑器 中显示在了最前。

    那么脚本的执行顺序应该和其所挂载的节点相关,为此,我还特地做了一个实验。


    层级管理器

    当我把层级这样排布时,每一个tree节点上都挂了同一个脚本TestScript,写了一句话:

    onLoad () {
            //测试谁先load
            cc.log("onload : " + this.node.name);
        },
    

    运行查看日志得到的结果:


    结果

    非常完美,onload的执行顺序就是从上往下的,那么,如果我挂在同一个节点上的话,这时候的执行顺序会是怎么样呢?于是我又做了一个实验,又写了一个Test2Script脚本,还是一句话:

    onLoad () {
            //测试谁先load
            cc.log("onload2 : " + this.node.name);
        },
    

    我把两个脚本都挂在tree上,不过把Test2Script放在了下面:


    脚本顺序1

    这时候的执行顺序是:


    脚本顺序
    结果证明谁在上面 谁就先运行~

    相关文章

      网友评论

          本文标题:cocos creator onload的执行顺序

          本文链接:https://www.haomeiwen.com/subject/vzbnvftx.html