Scratch中级编程(13)——鼠标双击与判断

在scratch中,有“角色被点击”和“按下鼠标”两个模块,可以实现鼠标的单击。scratch在这两个模块里封装了鼠标单击事件的实现。但是关于鼠标双击,就有学员提到过一些问题。今天就先从这些问题开始。

首先,可能大家都能想到的,就是利用计时器来控制和实现双击事件。

没错,就是这个思路!且看如下代码,我们要求双击画五角星,而单击不能画。这段代码能不能正确执行?

我们设计的初衷是,通过计时器小于0.2来判断双击,如果大于这个时间段,就认为是两个单击。但实际结果却是:不行!不满足题意,单击也可以画。

问题出在哪里?任何一个成功的程序或软件,都少不了优秀而健壮的调试。通过调试,我们发现了:鼠标计数=2永远会执行,计时器小于0.2永远会执行。

我们还发现鼠标计数如果不清零,会是一个很大的数,而计时器似乎永远是0。这太奇怪了。

其实懂得了原理,就不奇怪了。

首先先说计时器,计时器从归零到执行判断小于0.2,虽然中间还间隔了一些代码,但是计算机是高速运转的机器,代码执行是瞬间的。Scratch计时器的精度相对有限,所以几乎判别不出来计时器的变化。所以计时器仍然是0。

再说鼠标计数。鼠标计数是在按下鼠标后执行加1,但是这个按下鼠标可不只是按的那一下。当按下鼠标的时候,这段代码会循环的执行,直到松开。

了解了原理,我们做了如下修正,就会得到正确的执行。正确代码如下:

我们把计时器归零放在了判断第一次鼠标点击里面,这样呢计时器就能识别出两次鼠标点击的时间间隔;增加了等待按下鼠标不成立的模块,这个代码的含义就是,每当按下鼠标执行至此,就要等待鼠标松开,而不再去重复执行。

程序虽短,但遇到问题一定要知其然知其所以然。

朋友们可以试试,有其他问题也可以留言。

给TA赞助
共{{data.count}}人
人已赞助
综合资讯

Scratch中级编程(12)——画图④

2023-5-27 14:44:11

综合资讯

Scratch中级编程(14)——选择排序

2023-5-28 21:14:45

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
购物车
优惠劵
今日签到
有新私信 私信列表
搜索