require(“cc.Class模块”) 是不是要再new()一下? 否则没法用啊/.
底层是不是在constroctor时会判断是否new过, 然后返回已经new的实例.
require(“cc.Class模块”) 是不是要再new()一下? 否则没法用啊/.
底层是不是在constroctor时会判断是否new过, 然后返回已经new的实例.
请区分以下几个概念:
模块脚本、构造函数、组件
模块脚本是指导出模块或使用模块的脚本,它导出的模块可以require到别的模块脚本中访问使用。对于Creator来说,很大一种可能就是模块的默认导出既是用cc.Class定义的构造函数。
构造函数是用来构建对象的函数,保存着一类对象的原型,在Creator中一般以cc.Class函数来定义
组件是指用于组合出具有一定功能的cc.Node对象的元件,用于实现具体的逻辑功能,是一个运行时对象,通过addCiomponent方法添加到指定的cc.Node对象上,通过getComponent方法从cc.Node对象上获取。引擎内部会通过组建的构造函数来创建组件
没明白.
很多cc.Class 都加载在游戏的不同的NODE中. 因为需要彼此调用? 请问如何使用require?
// 手动properties{}里设定太繁琐了.
其实都是obj,差距是有没有执行构造函数。。既然是class了,那new的必要就在ctor里。不知道这么说你明白不。require出来的是类,new出来的是对象。
require的不是组件而是模块,每个模块不管被require多少次,都是同一个模块,不会存在多份。
组件的构造函数会被包含在模块内,而且会注册到Creator的资源管理系统里面,引擎会在你要用的时候去new他们然后给你用,意思就是说你不需要new,只需要调用addComponet就可以了
建议先好好理解一下普通ccc脚本里的结构
然后理解官方手册说明:
module.exports 的默认值:
当你的 module.exports 没有任何定义时,Creator 会自动优先将 exports 设置为脚本中定义的 Component。如果脚本没定义 Component 但是定义了别的类型的 CCClass,则自动把 exports 设为定义的 CCClass。
在这里:
http://docs.cocos.com/creator/manual/zh/scripting/modular-script.html#定义普通-javascript-模块