From Test-Scratch-Wiki
Forever | |
重複無限次 | |
类别 | 控制类积木 |
形狀 | 半框形积木 |
重複無限次 积木 是一個 控制类积木 和一個 半框形积木。 在這個方塊之中的積木會在迴圈被執行時執行, —就如同 重复 () 次 積木和重复直到 () 積木, 只是這個迴圈永遠不會停止 (除非 停止标志 被點擊或 停止全部 積木被觸發, 又或者 停止程式 在迴圈中積木被觸發). 由於這個積木是一個無線迴圈, 它的底部沒有一個突出的接口; 擁有一個接口並不會有任何的意義, 因為接在它下面的積木用遠不會被觸發。
這個積木有一個微小的延遲,所以為了在運行時有最佳的速度, single frame block stacks 應該被使用。
用法示例
重複無限次積木是 Scratch 中最常用的積木之一,因為有很多情況需要一個無線迴圈。 常用的範例為:
- 將一個角色固定在另一個角色的位子
重複無限次 定位到 [角色1 v] 位置 end
- 循環撥放音樂
重複無限次 播放音效 [Battle theme v] 到底 end
- 动画类专案 (例如揮手)
重複無限次 重複 (12) 次 左轉 @turnleft (3) 度 end 重複 (12) 次 右轉 @turnright (3) 度 end end
应用
- Main article: List of Block Workarounds
這個方塊可以用兩種方式重現: 用一個永遠不會是"是"的 菱形积木 , 或用 递归.
With the boolean method, the 重复直到 () block is used, along with the boolean statement. There are many that will never be true, including:
<[1] = [-1]> <[a] = [b]> <(計時器) = [-1]> <<<> 不成立> 不成立>
A full workaround:
重複直到 <[1] = [-1]> . . . end
One method that does not involve false boolean statements is tail recursion. Tail recursion can be created by a script broadcasting the 广播 needed to start it, thus repeatedly running the script:
當收到訊息 [Recursion v] . . . 廣播訊息 [Recursion v]
This has some benefits to making projects. For example, the script is helpful since it can be used to create fractals.
This also works:
重複 ([10^ v] \( (309) \)) 次 . . . end
This requires an operator that reports "Infinity", like:
([10^ v] \( (309) \)) ([e^ v] \( (1000) \)) (字串組合 [Infinity] 和 [])
All of these will work in the last workaround.