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

1、說明

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

(1)中止(所有腳本):終止整個程序執行,完全退出程序;編程

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

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

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

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

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

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

2、有關使用技巧

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

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

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

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

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

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

再想一想,上面自定義積木「計算待植物的座標」可以稍微改進一下,也能實現咱們的計算目的呢?

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

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

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

如何?問題顯示得以解決!只須要把上面「中止(這個腳本)」這塊內置積木更換成咱們本身的「中止這個腳本擴展」這塊積木便可.

相關文章
相關標籤/搜索