看见标题的时候我知道你一定不相信,明明交互动作里有鼠标单击时也有鼠标长按时,怎么会有冲突呢?实际上长按后两个交互都会触发,所以,该如何解决?
如果一个元件上既有单击交互,又有长按交互的时候,就会发生冲突,长按时2个交互都会触发。如下面左图:
我们希望的正常效果是右图那样的,感谢小楼老师提供了解决的思路,为了让大家也理解思路,我给大家详细讲一下!
要想解决这个问题,就要先明白什么是单击,什么是长按。
按时段分,整个流程可以分为2段:短按时段与长按时段。
开始之后,会同时执行鼠标单击时、鼠标松开时、鼠标长按时3个交互。
鼠标单击事件触发:全局变量的初始值为0,按下鼠标后,如果还没进入长按,就不会改变变量,那么此时变量依旧是0,松开鼠标后判断变量是≠1的,所以触发鼠标单击事件。
鼠标长按事件触发:按下鼠并且进入长按时段后,设置变量为1,并且会触发鼠标长按事件。松开鼠标后会去触发鼠标单击事件,可这个事件的条件是变量≠1,所以无法触发。
最后,为了不影响下一次点击时的交互,要在鼠标松开时将变量重置为0。