博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于Cocos Creator脚本执行顺序的几点补充
阅读量:7090 次
发布时间:2019-06-28

本文共 1861 字,大约阅读时间需要 6 分钟。

Cocos Creator开发远非初看起来那么容易,正早一些可视化开发语言,例如VB,入门很容易,但进入实战阶段,你很可能会发现问题一股脑儿出现。但是,不要怕,根本原因还在于你不熟悉它。其效率不必怀疑,而且官方的主打产品也正是它。开发中,深感官方关于Cocos Creator脚本执行顺序尚存在很多不详细或者透彻的地方;因此,本人结合最近一个时段的学习,作以下几点补充。

一,官方文档最重要

地址是:

但是,其中提倡使用统一的控制脚本来初始化其他脚本这一部分尚有一些疑点,例如官方给出的示例代码是:

// Game.jsconst Player = require('Player');const Enemy = require('Enemy');const Menu = require('Menu');cc.Class({    extends: cc.Component,    properties: {        player: Player,        enemy: Enemy,        menu: Menu    },    onLoad: function () {        this.player.init();        this.enemy.init();        this.menu.init();    }});

但是,当三个脚本Player.js,Enemy.js和Menu.js分别挂载到一些UI组件上时,这个Game.js本身挂载到哪里?只是简单地创建一个与最外层Canvas同级的空节点上并把它挂载到上面去吗?通过我的试验分析,这是存在问题的。

二、同一节点上脚本的执行顺序

官方的结论是:

“在同一个节点上的组件脚本执行顺序,可以通过组件在 属性检查器 里的排列顺序来控制。排列在上的组件会先于排列在下的组件执行。我们可以通过组件右上角的齿轮按钮里的 Move Up 和 Move Down 菜单来调整组件的排列顺序和执行顺序。”
这个没有什么可值得怀疑的,也很好理解。

三、后代节点上挂载的脚本的执行时机

若某节点是父节点,其下有一个子节点,且这父子节点都各自挂载一些脚本,则执行顺序是先执行父节点上的脚本(可能有多个),再执行子节点上的脚本。

四、兄弟节点上挂载的脚本的执行顺序

此种情况下,按照自上而下的顺序执行各节点上挂载的脚本代码。

五、一般情形下挂载脚本执行顺序

若有如下所示的节点及脚本的挂载结构图:

Canvas1(本身挂载有S1.JS脚本)

其下有子节点BALL(此节点挂载有S11.JS脚本)
Game(本身挂载有S2.JS脚本)
其下有子节点PLATFORM(此节点挂载有S21.JS脚本)

于是,根据上面分析有下面的脚本执行顺序:

S1.JS S11.JS S2.JS S21.JS

六、非使用cc.Class定义的非继承自cc.Component脚本文件的执行时机

例如脚本文件Physics-Settings.js:

console.info("I am here...");let physicsManager = cc.director.getPhysicsManager();physicsManager.enabled = true;physicsManager.debugDrawFlags =     // 0;    // cc.PhysicsManager.DrawBits.e_aabbBit |    cc.PhysicsManager.DrawBits.e_jointBit |    cc.PhysicsManager.DrawBits.e_shapeBit    ;

此脚本的加载非常之早,在所有软件自定义脚本的开发之前加载,有下图为证:

关于Cocos Creator脚本执行顺序的几点补充

因此,由上图可见,程序中所有脚本的加载顺序为:

Cocos2d 引擎

插件脚本(有多个的话按项目中的路径字母顺序依次加载)
普通脚本(打包后只有一个文件,内部按 require 的依赖顺序依次初始化)

七、小结

Cocos Creator入门容易,深入掌握也不易,但随着官方提供支持的不断丰富,相信会进一步简化我们的学习。有关JS脚本开发技术,更是Cocos Creator开发中的重中之重,随着对这个工具的不断深入,需要我们也不断深入掌握JS开发技术。本文仅是本人近期一个BOX2D类小游戏开发过程中结合自己使用总结出的一点小体会,不当处还希望各位多多批评。

转载地址:http://jcnql.baihongyu.com/

你可能感兴趣的文章
SpringSrcureCode在grails中实现用户--角色--权限的管理
查看>>
java Servlet 下载 itext 生成的2003 word 文档(java生成word文档3)
查看>>
最锋利的jQuery源码、电子书及视频教程合集(共46个)
查看>>
开源 java CMS - FreeCMS2.8 站点管理
查看>>
Test
查看>>
Nginx配置文件nginx.conf中文详解(总结)
查看>>
c++中::的用法和命名空间
查看>>
win32gui中操作任务栏托盘区的函数
查看>>
SVN版本库的迁移
查看>>
内核中的链表彻底分析与运用
查看>>
新版TeamTalk完整部署教程
查看>>
我的友情链接
查看>>
剑指XX游戏(八) - 腾讯2013校园招聘技术类笔试题详解
查看>>
mysql root账户被删除
查看>>
【CentOS 7笔记47】,rsync文件同步工具#171205
查看>>
个人知识管理是职场必修课
查看>>
python argparse
查看>>
在linux下安装android以及C/C++开发环境
查看>>
nsq服务器安装使用与golang客户端使用
查看>>
gitlab ssh key
查看>>