就是在一个 node 上挂一个 Button 组件 ,在这个组件里设置一个监听事件
跟 直接 在这个 node 上 绑 一个 node.on(cc.Node.EventType.TOUCH_START,…… ); 这种有啥区别?
要是有10000 个 node 需要监听,这两种方式哪种性能更好?
(我在想反正有 “node.on(cc.Node.EventType.TOUCH_START” 了,为啥还需要有 Button ?)
就是在一个 node 上挂一个 Button 组件 ,在这个组件里设置一个监听事件
跟 直接 在这个 node 上 绑 一个 node.on(cc.Node.EventType.TOUCH_START,…… ); 这种有啥区别?
要是有10000 个 node 需要监听,这两种方式哪种性能更好?
(我在想反正有 “node.on(cc.Node.EventType.TOUCH_START” 了,为啥还需要有 Button ?)
你试试当你点击按钮然后移开,走了button的点击事件没,然后你测试下,当你设置按钮不可点击,你看node.on的监听执行没,而button的走了没。仅此两个不同,回答你的疑问。
没仔细看过button的实现代码 但button的实现也是用了on的。
你单单问性能 那我觉得一个on会比button节省性能
但如果你问哪个方便 那我选择button(当然具体看需求是什么)
要是有1万个node需要监听,我觉得你不应该先考虑哪种方式好,而是你应该先考虑怎么优化性能,你会发现监听所消耗的性能在1万个node的渲染面前不值一提。同样你在另一个帖子里说的1亿个node的监听也是同理
https://docs.cocos.com/creator/api/zh/classes/Button.html?h=button
有什么属性,方法就有什么能力,你去看看
https://github.com/cocos-creator/engine/blob/e222465ce8426e5cf32052e4f37701f3a529ed18/cocos2d/core/components/CCButton.js#L599
看源码你也会发现button把touch事件全给注册了
看了上面,不用说你也知道谁的性能更好了