网友“just-珠海”对鸿哥的双击按键程序提出的疑问?已解答。
本帖最后由 jianhong_wu 于 2014-11-7 23:38 编辑just-珠海:
而且鸿哥如果这时不是连续按下两次,那如何执行程序.
鸿哥-深圳:
我在if(key_sr1==1)里面有一个限制两次触发按下去的时间间隔的变量uiKeyIntervalCnt1++;这个计时变量的作用是,如果你只按了一次,在规定的时间内没有再按第二次,那么刚才按的第一次就会自动清除记录了,你下次再想触发,还是必须连续按两次才能触发按键,而且这两次的时间间隔是不能太长。
just-珠海:
鸿哥,如果之前按键按下一次,现在再来一次不是应该触发按键吗?接下来的程序代码看不懂啥意思啊.
那为什么不是写的是触发程序呢?
鸿哥-深圳:
如果之前按下了一次,现在再来一次,必须保证这次的时间距离上次的时间不能太久,否则就不触发。如果连续两次的时间很短才会触发。这段代码的意思是,如果你的两次时间太长了,我就把上一次的记录清零了.
just-珠海:
嗯,原来是这样。上一次的清零为了下一次的重新来过.就像鼠标那样~需很短时间双击打开.但是这间隔时间到底多少是根据项目要求来做吗?
菜鸟-佛山:
是的。这个时间由自己定的.
just-珠海:
这三个if执行完才是到else if 吧?
菜鸟-佛山:
第一个if成立,第二个if成立,才执行第三个if。如果第一个都不成立就直接执行else if。
just-珠海:
按你这样说,第一个if成立的话,就没必要执行第二个了,因为都已经判定没有键按下了。
菜鸟-佛山:
对。
just-珠海:
怎么还跳到如果之前有按键按下一次呢,那你不是自相矛盾?
菜鸟-佛山:
你第一次按下,就势必进入else if中将uckeyTouchCnt+1。
just-珠海:
那第一次没按下呢?
菜鸟-佛山:
然后才是检测到第一个if又成立了,再是第二个也成立,再执行第三if。
just-珠海:
怎么还去判定呢?
菜鸟-佛山:
没按下是ucKeyTouchCnt==0;所以不会进去第二个if语句中,也就不执行第三个语句。只有执行过一次else if后才能进。
just-珠海:
那这个何时发挥作用?
菜鸟-佛山:
当你按下一次按键的时候。
just-珠海:
这样吧。
菜鸟-佛山:
对。
just-珠海:
为什么不把这一部分的if写在else if里边呢。
菜鸟-佛山:
按键按了一次,松手后就进入第二个if。因为是要按键松手才检测啊。当你按第一下,松手后,就不在else if中。第一个if成立了,所以不再else if中。
just-珠海:
我暂时自己慢慢消化就好,应该没问题啦。谢啦。
页:
[1]