資訊內容
Scratch第十三講:按鍵的技巧
檢測按鍵事件好像非常容易的,因為有一個事件命令就叫當按下...鍵。
這個命令就可以檢測多所有的按鍵。平常我們就經常用到這個命令,比如用上下左右鍵來調整角色的方向,用空格鍵操作一些角色的動作,如發射子彈,跳起來等。
但是我們會碰到另一種按鍵的情形,就是持續按下,或者說長時間按下空格鍵,會出現什么情況。我們試一下。
發現沒有,在按著空格鍵不動的時候,小貓走了10步后先停頓了一下,然后才會連續運動。而不是一直連續運動。
這是什么情況呢?CC哥覺得這應該Scratch的設計者在做這個命令的時候,在程序里增加了抗干擾的代碼。一般來說,按鍵操作每個人都不一樣,有的人按的很快,有的人對鍵盤不熟悉,按的很慢,那么程序要判斷你是按了幾次呢?所以這里面就有一個抗干擾代碼,來判斷你是只按了一次鍵,而不是想連著一直按,所以給了個停頓來消除按鍵中的干擾因素。當然如果你確實一直按著不撒手,那說明你就是要一直按著,也就繼續執行了。所以這個事件命令就是針對一次性的按鍵事件,而不是用來做按著不放的按鍵事件。
但是如果我們就是希望一直按著鍵盤,而不是只是想按一下呢?比如我們需要用鍵盤來控制小貓的行走,你肯定希望當按鍵按下時,小貓就能連續走,而不是還要停一下。那怎么編寫這段代碼呢?
我們用一個循環偵測組合,不斷的去檢測是否空格按鍵被按下,如果按下了就移動10步。讓我們來看看這段代碼的執行效果。
看,這走起來是不是行云流水一般。
不過感覺上有點不方便,之前空格鍵檢測就用了一條事件命令,而現在卻要寫一段代碼,如果是一個大型程序,反復要檢測空格鍵怎么辦,那不是反復要寫一段代碼?
不用擔心,我們可以用之前學過的一個命令解決這個問題。就是廣播和接收。
看,把循環判斷中的移動命令換成了廣播命令,廣播一條空格鍵被按下的消息,然后用接收命令來接收到消息后執行后面的代碼。這樣在大型程序里就不需要反復去寫一段代碼了,只需要用一條接收消息的命令就可以了。是否很像其他編程工具和數學里的函數以及函數調用?原來廣播命令還有這種使用方式,是不是很開心。
聲明:本文章由網友投稿作為教育分享用途,如有侵權原作者可通過郵件及時和我們聯系刪除
