如题,一个挂载在Canvas节点上的TS脚本,import 其他文件中的类,被import文件为纯逻辑类,因此没有任何类继承于cc.Component。逻辑类使用了export关键字导出,看到生成的js文件里面确实也有导出代码:
。
Creator报错:
只要不import这个文件,就没问题,一旦引用,脚本将无法挂到节点上。
另外报错时,能报脚本文件的名称么?这个ID没有可读性。
如题,一个挂载在Canvas节点上的TS脚本,import 其他文件中的类,被import文件为纯逻辑类,因此没有任何类继承于cc.Component。逻辑类使用了export关键字导出,看到生成的js文件里面确实也有导出代码:
。
Creator报错:
跟TypeScript、import、export都没关系,想挂载到节点上的东西,必须继承自cc.Component。
谢谢回答。
挂在节点上的这个脚本肯定继承了cc.Component,问题是这个脚本又引用了其他的一个脚本,其他脚本只是一个逻辑类,这个逻辑类不需要继承于Component。
弄了一个空的工程,按这种方式做,又没有问题,快被整晕了。
似乎和我的工程环境有关系,现在测试下来,我可以import 这个逻辑类,但不能new这个逻辑类的对象,加上new 这个对象的代码就会报错
,去掉new就好。控制台有也没有了昨天的输出。
另外一个问题就是,我按照官方文档,使用了TS的命名空间,比如
namespace xx
{
}
将输出的js放在一个文件里面,creator这边导入为插件。然后其他代码使用xx 时,编辑器控制台一直报找不到xx的定义。但这个错误不影响实际运行,运行的时候能找到。也不影响脚本挂载。
但控制台一片红。上面的问题也可能和这个有关系。
1.6.2正式版。
通过注释法发现确实和找不到名字空间有关系。
那可能是你的逻辑类的import, export有问题,发一下import, export的代码吧
感谢关注,问题已经解决,给大家分享一下吧。
1,按照官方步骤使用TypeScirpt的namespace时,由于根命名空间转到js之后是一个全局变量,如果其他文件需要使用这个全局变量(namespace),导出的文件不能进行模块化封装,必须选择为插件。
2,选择为插件时,在这个界面:
默认允许编辑器加载未被选中,必须把这选项勾选中以后,编辑器才会加载这个脚本,然后编辑器加载其他使用该全局变量的脚本时,才能认识这全局变量。否则,凡是使用到这个全局变量(namespace)的地方,都会报错。
3,勾选之后,控制台会有一行蓝字,说var 申明的变量除非使用window.xx=yy的形式,否则可能不当做全局变量使用。只能手工修改一下这个文件。比如namespace 叫 xx,那么你看到ts输出的文件里面有很多 var xx; 将var xx全部删除,然后在上面声明一行 window.xx={};
安照上面步骤之后,编辑器飙红消失,世界清静了。
4,蛋疼的是,每次TS生成之后,都要手工修改这文件。。。。