Scratch第十三讲:按键的技巧

网友投稿 2018-09-10 22:51

检测按键事件好像非常容易的,因为有一个事件命令就叫当按下...键。

https://cdn.china-scratch.com/timg/180912/2251255Y6-0.jpg

这个命令就可以检测多所有的按键。平常我们就经常用到这个命令,比如用上下左右键来调整角色的方向,用空格键操作一些角色的动作,如发射子弹,跳起来等。

但是我们会碰到另一种按键的情形,就是持续按下,或者说长时间按下空格键,会出现什么情况。我们试一下。

https://cdn.china-scratch.com/timg/180912/2251256063-1.jpg

https://cdn.china-scratch.com/timg/180912/22512C195-2.gif

发现没有,在按着空格键不动的时候,小猫走了10步后先停顿了一下,然后才会连续运动。而不是一直连续运动。

这是什么情况呢?CC哥觉得这应该Scratch的设计者在做这个命令的时候,在程序里增加了抗干扰的代码。一般来说,按键操作每个人都不一样,有的人按的很快,有的人对键盘不熟悉,按的很慢,那么程序要判断你是按了几次呢?所以这里面就有一个抗干扰代码,来判断你是只按了一次键,而不是想连着一直按,所以给了个停顿来消除按键中的干扰因素。当然如果你确实一直按着不撒手,那说明你就是要一直按着,也就继续执行了。所以这个事件命令就是针对一次性的按键事件,而不是用来做按着不放的按键事件。

但是如果我们就是希望一直按着键盘,而不是只是想按一下呢?比如我们需要用键盘来控制小猫的行走,你肯定希望当按键按下时,小猫就能连续走,而不是还要停一下。那怎么编写这段代码呢?

https://cdn.china-scratch.com/timg/180912/22512I125-3.jpg

我们用一个循环侦测组合,不断的去检测是否空格按键被按下,如果按下了就移动10步。让我们来看看这段代码的执行效果。

https://cdn.china-scratch.com/timg/180912/22512Lc6-4.gif

看,这走起来是不是行云流水一般。https://cdn.china-scratch.com/Public/Home/images/grey.gifhttps://cdn.china-scratch.com/Public/Home/images/grey.gif

不过感觉上有点不方便,之前空格键检测就用了一条事件命令,而现在却要写一段代码,如果是一个大型程序,反复要检测空格键怎么办,那不是反复要写一段代码?

不用担心,我们可以用之前学过的一个命令解决这个问题。就是广播和接收。

https://cdn.china-scratch.com/timg/180912/22512a564-7.jpg

看,把循环判断中的移动命令换成了广播命令,广播一条空格键被按下的消息,然后用接收命令来接收到消息后执行后面的代码。这样在大型程序里就不需要反复去写一段代码了,只需要用一条接收消息的命令就可以了。是否很像其他编程工具和数学里的函数以及函数调用?原来广播命令还有这种使用方式,是不是很开心。

--end--

声明:本文章由网友投稿作为教育分享用途,如有侵权原作者可通过邮件及时和我们联系删除:freemanzk@qq.com