Cc.Class 的 properties 属性怎么获取?

我有一个需求:控制 js properties 里定义的类型,比如:某一类脚本只能定义控件类型的,另一类脚本只能定义数值类的。

有两种方法:

1、在IDE内限制,目前不知道怎么弄,如果有办法,希望贵团队告知我,谢谢

2、得到 properties 属性,遍历里面的定义,如果有不合法的则报错,对于这种方法,我在代码里获得的 properties 的属性始终为 undefined ,怎么才能正确的获取到呢?

3、如果有其他方法能满足这个需求,也请告知我一下,谢谢

1赞

IDE 不太好控制引擎层面的逻辑

目前没有公有的 API 来完成这件事情,但私有 API 也不会有大改,你可以试着这样遍历:

var Attr = cc.Class.Attr;
var DELIMETER = Attr.DELIMETER;
var props = klass.__props__;    // klass 是你定义的 CCClass
var attrs = Attr.getClassAttrs(klass);
for (var p = 0; p < props.length; p++) {
  var key = props[p];  // 遍历 properties
  var type = attrs[key + DELIMETER + 'type'];  // 获得 type 中定义的值类型
  var ctor = attrs[key + DELIMETER + 'ctor'];  // 值类型是 Object 时还可以获得构造函数
}
2赞