友情提示:380元/半年,儿童学编程,就上码丁实验室。
大家好,我是苏小糖,今天来研究一下Scratch中对于按键的处理。很多程序中都会加入按键的检测,来控制角色作出各种动作。比如说角色的移动,飞机发射子弹,或者说打字母游戏,都需要加入对按键状态的判断。Scratch中,事件代码下有当按下某某键,侦测代码下有按下某某键?这两种的使用区别,现在来探究一下。
1使用两个角色做对比测试
添加篮球角色,使用事件代码,上下左右四个方向键分别在对应方向上坐标改变10。
添加苹果角色,使用侦测代码和如果那么判断结构,同样上下左右四个方向键分别在对应方向上坐标改变10。
两个角色的初始化位置均为x:0 y:0。按下对应按键以后,在对应方向上的坐标值变化也是一样的。很直观的可以判断篮球和苹果的运动状态会是同步的。但是,果真如此么?
2 进行点按和长按测试
首先进行点按测试,按下按键后,快速放开。可以发现,苹果移动的速度要快一些。篮球的速度要慢一些。就像每次苹果都多跑一点。
然后进行长按测试,按下按键后,等待1秒或2秒再放开。可以发现,苹果移动的速度还是比篮球快。而且篮球会有卡顿感,持续按住按键的时候篮球的运动依然是有停顿的。尤其按下按键第一次移动后停顿的时间要长一些。
3 对比测试结论
通过以上直观的对比测试,可以得出结论。
事件代码下的按键检测适合单次触发动作,不要求连续性的情况。而且两个不同按键的编程相互独立。比如,克隆方式发射子弹,最好是有时间间隔的,而不是几乎同时发射多发子弹。
侦测代码下的按键检测适合对连续性要求较高,长按允许连续多次执行的情况。比如,角色的移动,我们希望是连续的,没有停顿感的。
转自公众号:
xtrobot