官方button组件不支持按下触发,求完善

兄弟,地图炮处女座不对吧?
不过楼主这表达欠佳,
觉得图标小 可以把BG放Button下面,然后你手动设置button大小,多大都可以

楼主标题党了,这不能叫 「体验极差」好吧,我帮你把标题改了。
目前绝大多数操作体验都是回弹触发的,所以用户按错的时候可以把手指移出 button 区域释放,来取消掉按错的操作。

3赞

哈哈哈!本来“处女座”这个位置,想敲的是:“屁大点事!”,想想自己实力这么菜还这么嚣张有点说不过去………………

解决触摸区域过小的方法:将点击事件绑定在一个大小你觉得够大的空节点上,将你的X按钮图片作为这个空节点的子节点,就可以了。

unity小按键点击边缘就不会有无效的问题。(相同大小的按键,在手机上测试20次,没问题。cocos 13次成功)

我当然希望cocos按键 按下回弹后处理,关键是小按键处理不了。用户点击按键边缘,可以进去touchstart,回弹就不是按键的touchend,所以不触发事件。

1赞

所以你的按键是按下后会变小?

他应该是按钮设置了scale,按下后变小,所以当点击按钮边缘时,button的hitTest没有生效导致回弹以后不触发按钮的touchend事件。

是的。按键的scale

你用一个透明的节点当按钮也可以的,或者自己订制一个按钮。可以设置碰撞区域的。

做法错了,scale的话操作的应该是图片不应该是按钮本身,这是自己的代码问题

image

好了。这个问题别回复了。
图片下挂button组件,效果为sacle。点击边缘地方(无论大小按键),马上松开,按键会有sacle效果,但有时候并不会进入相应的函数中去,也就是没有效果。因为会进入到取消。

懒办法是:在按键图片上放个父节点,父节点比图片区域大,让父节点挂button.

目前我用fgui了,不用官方自带的了,fgui全是自己代码控制了。因为我的按键不需要取消(也就是按下移开,当然官方用代码touchstart也可以实现)。

感谢各位大佬的回复。

1赞

感觉莫名奇妙,官方自带的按钮组件就是:按钮节点=>效果图片=>图片文字(一般没用)的结构,这被理解成懒办法了?最懒的办法就是直接拖个默认组件出来,然后手动绑个TOUCH_START时间不用ClickEvents就是了

奇怪的帖子. 点击事件不都有各自的作用? 官方提供的不行.就自己扩展一下. 怎么就和体验有关系了?
要想点击就触发 完全可以自己 on touchBegin事件啊

你说的那个问题,实际上就是因为缩放后松开的位置在节点外面,所以不会触发touchend,并非是什么bug,想避免你可以同时监听touchendtouchcancel

嗯。差不多就是你这个意思。缩放后就在节点外面(如果严格来说,缩小的位置也还在节点里面,只是边缘地带,因为我用同样的位置按下,有时候可以有时候不可以),进入到取消事件去了。

unity就不会出现。一样大小的图标,点击边缘or松开在节点外面,不会进入取消事件。一定要手指移开才行。

cocos的设计本身就是button组件做事件处理,button下的图片做效果处理,你对button做scale处理必然会有这种问题。
就像正常黑人天生皮肤就是黑的,我们黄种人还要晒太阳才能让皮肤变黑,这算是伏羲的bug吗?

直接创建一个默认的button 都没有这个问题 使用方式错了

请问为什么你要把 Button 挂在图片下?默认创建的组件,是图片在 Button 下的。不会出现检测区域缩小的问题。
image

1.挂在图片下,是因为偷懒。默认btn,需要删label,改变量名等。没有直接托图片挂btn便捷。
2.后面采用默认方式,检测区不缩小,点击边缘地带还是会有时候进不去。(后面是把父节点比btn大一点)