clickEvents.push(xxx)注册不了事件

let btn = this.node.getComponent(cc.Button);
// console.log(this,btn);
// let clickHandler = new cc.Component.EventHandler();
// clickHandler.target = this.node;
// clickHandler.component = “block”;
// clickHandler.handler = “onClick”;
// clickHandler.customEventData = “123”;
// btn.clickEvents.push(clickHandler);
btn.node.on(“click”, this.onClick);
通过注释的代码无法注册事件无效果且报错?需要用on,这两个有什么区别??


这里有一个开发交流群,加微信回复cocos邀请

能否参考一下这个文档实现你的功能。
https://docs.cocos.com/creator/manual/zh/components/button.html?h=button

就是参照这里写的,采用push的方式会出现以下错误
getComponent: Type must be non-nil
27.cc.errorID @ CCDebug.js:254
getConstructor @ base-node.js:47
getComponent @ base-node.js:804
emit @ CCComponentEventHandler.js:147
emitEvents @ CCComponentEventHandler.js:122
_onTouchEnded @ CCButton.js:695
我是在预制资源上加的 这个资源名字是block 绑定的用户组件是block.ts

我通过on和在ide中绑定都可以实现,但通过以上注释的代码就是不行

请问你的CocosCreator测试版本是多少?

2.0.10

找到原因了,注释代码是正确的。原因就是creator会默认给脚本文件添加文件后缀,且没有显示出来。然后其他ide,或者类似vscode等,都让开发主导文件后缀。