解决触摸区域过小的方法:将点击事件绑定在一个大小你觉得够大的空节点上,将你的X按钮图片作为这个空节点的子节点,就可以了。
unity小按键点击边缘就不会有无效的问题。(相同大小的按键,在手机上测试20次,没问题。cocos 13次成功)
我当然希望cocos按键 按下回弹后处理,关键是小按键处理不了。用户点击按键边缘,可以进去touchstart,回弹就不是按键的touchend,所以不触发事件。
所以你的按键是按下后会变小?
他应该是按钮设置了scale,按下后变小,所以当点击按钮边缘时,button的hitTest没有生效导致回弹以后不触发按钮的touchend事件。
是的。按键的scale
你用一个透明的节点当按钮也可以的,或者自己订制一个按钮。可以设置碰撞区域的。
做法错了,scale的话操作的应该是图片不应该是按钮本身,这是自己的代码问题

好了。这个问题别回复了。
图片下挂button组件,效果为sacle。点击边缘地方(无论大小按键),马上松开,按键会有sacle效果,但有时候并不会进入相应的函数中去,也就是没有效果。因为会进入到取消。
懒办法是:在按键图片上放个父节点,父节点比图片区域大,让父节点挂button.
目前我用fgui了,不用官方自带的了,fgui全是自己代码控制了。因为我的按键不需要取消(也就是按下移开,当然官方用代码touchstart也可以实现)。
感谢各位大佬的回复。
感觉莫名奇妙,官方自带的按钮组件就是:按钮节点=>效果图片=>图片文字(一般没用)的结构,这被理解成懒办法了?最懒的办法就是直接拖个默认组件出来,然后手动绑个TOUCH_START时间不用ClickEvents就是了
奇怪的帖子. 点击事件不都有各自的作用? 官方提供的不行.就自己扩展一下. 怎么就和体验有关系了?
要想点击就触发 完全可以自己 on touchBegin事件啊
你说的那个问题,实际上就是因为缩放后松开的位置在节点外面,所以不会触发touchend,并非是什么bug,想避免你可以同时监听touchend和touchcancel
嗯。差不多就是你这个意思。缩放后就在节点外面(如果严格来说,缩小的位置也还在节点里面,只是边缘地带,因为我用同样的位置按下,有时候可以有时候不可以),进入到取消事件去了。
unity就不会出现。一样大小的图标,点击边缘or松开在节点外面,不会进入取消事件。一定要手指移开才行。
cocos的设计本身就是button组件做事件处理,button下的图片做效果处理,你对button做scale处理必然会有这种问题。
就像正常黑人天生皮肤就是黑的,我们黄种人还要晒太阳才能让皮肤变黑,这算是伏羲的bug吗?
直接创建一个默认的button 都没有这个问题 使用方式错了
请问为什么你要把 Button 挂在图片下?默认创建的组件,是图片在 Button 下的。不会出现检测区域缩小的问题。

1.挂在图片下,是因为偷懒。默认btn,需要删label,改变量名等。没有直接托图片挂btn便捷。
2.后面采用默认方式,检测区不缩小,点击边缘地带还是会有时候进不去。(后面是把父节点比btn大一点)
从操作上来说,挂图片下,的确方便一些。项目中,比如要加个关闭按钮,就把图拖到节点列表,然后挂Button,这样Button好了,节点名字也是图片名。如果按新建Button这样的节点树,达到类似效果,需要很多额外操作。
从组件的设计理念来说,组件为节点赋能。按上面图新建 Button,额外的引入了两个节点,一个节点多个组件能完成的事,却用多个节点的组合来做,不太符合组件的设计思路。
节点内按下再松开是touch_end。
离开节点松开触发的不是touch_end,是touch_cancel。
可以监听touch_cancel …
后面我建了个按键预制体,然后把预制体拖到cocos面板中的自定西控件去。这样也方便。