其实你这样的意图本身是没问题的,官方文档也没说错,通过“require”引入模块去直接调用里面相应的方法等。
但你的编码有问题,实际是你没弄明白实例对象的方法和类静态方法的区分,这里和下面都是按Creator里的模拟传统OOP语言里类相关概念去理解和叙述。你暂且先如此强行理解吧:你上文那样的编码就是相当于定义了一个playerInfos类,你里面的func函数那样编码就相当于传统OOP的实例方法,而require(‘playerInfos’)只是引入了这个类,你自然需要new一个类的实例对象才能调用其实例方法,比如:
//命名故意区分
const PlayInfosClass = require('playerInfos')
let playerInfoObj = new PlayInfosClass()
palyerInfosObj.func()
//......
如果你想:
const PlayInfosClass = require('playerInfos')
PlayInfosClass.func()
//......
显然需要func函数为类静态方法,比如按官方文档里教的去定义:
let playerInfos = cc.Class({
extends: cc.Component,
// 声明静态方法
statics: {
func: function () {}
}
//...
})
当然官方文档里还有其他方式,只是个人觉得这种更具语义化。
CCClass 进阶参考
也许是:
var playerInfos=cc.Class({...})
这样把人弄迷糊了……JavaScript利用构造函数+原型的方式去模拟传统OOP的类与继承的确容易把新接触JavaScript的同学弄迷糊,两边不同的概念相互映射起来,不小心就弄糊涂了。像我这样的JavaScript小白觉得JavaScript是入门平缓,但想深入进去还是有一些陡峭处的。水平有限,不当之处还请指正,与君共勉。