Scratch編程技巧之「停止腳本執行」積木用法

一、說明

Scratch在[控制]類積木下有一種積木稱爲[停止腳本執行],如圖所示:
Scratch編程技巧之「停止腳本執行」積木用法
如上圖所示,共有三種應用情形。

(1)停止(全部腳本):終止整個程序執行,徹底退出程序;

(2)停止(這個腳本):終止這個角色對應的當前代碼組(本積木所在代碼組)的執行,而不影響當前角色其他代碼組的執行;

(3)停止(該角色的其他腳本):終止執行這個角色其他代碼組的執行,而不影響當前代碼組(本積木所在代碼組)的執行。

在實際應用中,我們不僅要關注這個積木各個命令本身,還要觀察此積木的形狀。細心的小程序員會注意到,在情形(1)和(2)時,這個積木底部是平面的,意即此時後面不能再接續其他積木代碼了!

但是,在情形(3)時,這個積木底部變成凹形,意即此時後面可以再接續其他積木代碼!這是基於實際程序開發中的需求,Scratch開發人員作出的明智決定,參考下圖。
Scratch編程技巧之「停止腳本執行」積木用法
下面例子給出了此積木的典型應用:
Scratch編程技巧之「停止腳本執行」積木用法

上面兩組代碼是應用於某一個程序的舞臺角色上。左邊代碼的含義是在通常情況下,開始運行程序後,連續地播放舞臺背景音效。

右邊的含義:當舞臺收到“end”消息時會通過調用上面的積木塊(情形3)硬性結束舞臺背景音效的播放(可能很長),然後開始播放另一段指定音效。

二、有關使用技巧

在情形(2)時,簡單情況下,此功能意思是結束當前代碼組的執行。但是,在有些複雜的開發中(實際應用軟件開發需求是各種各樣的),這塊積木具有明確的侷限性。請看下面的例子:
Scratch編程技巧之「停止腳本執行」積木用法

Scratch編程技巧之「停止腳本執行」積木用法

上面代碼中我在當前調試的植物大戰殭屍遊戲中使用的,代碼意思很明確:通過上述兩個自定義積木計算當前要種植的植物的座標位置。

但是,在創建上面代碼前我使用了一個自定義積木,如下所示,想一次性計算出要種植的植物的座標位置。大家看看有沒有問題:
Scratch編程技巧之「停止腳本執行」積木用法
注意,上面代碼的意思是,先求X座標,再求Y座標,分別把求得的結果存儲到兩個變量中。但是,由於計算中要求遍歷列表來計算,即需要使用循環來確定玩家點擊的鼠標位置,然後確定要種植的座標區間。而爲了提高程序效果,一旦計算出這個座標值,應當立即結束當前循環的執行(再執行沒有必要),再繼續往下執行求後面的Y座標。

上面示例中很典型中說明了Scratch終止類積木的第(2)種情形的需要,但是,上面代碼存在明顯錯誤,即第一處調用後,此代碼組一次性結束執行,後面不會再求Y座標了。

爲此,我想到的辦法之一是:使用上面兩組積木方案,即X座標與Y座標單獨分別求解。

再想想,上面自定義積木“計算待植物的座標”能夠稍微改進一下,也能實現我們的計算目的呢?

當然有。答案還在於:自定義積木。

因爲根據上面分析,在情形(2)時,這個積木底部是平面的,意即此時後面不能再接續其他積木代碼了!但是,Scratch自定義積木總是會以後面可以接續其他積木的方式出現,即總是凹形的。於是有下面辦法來改進上面的Scratch默認的情形(2)停止積木的侷限性:
Scratch編程技巧之「停止腳本執行」積木用法
有了上面定義後,結果顯示如下:

Scratch編程技巧之「停止腳本執行」積木用法

如何?問題顯示得以解決!只需要把上面“停止(這個腳本)”這塊內置積木更換成我們自己的“停止這個腳本擴展”這塊積木即可.

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章