From Test-Scratch-Wiki

Forever
重複無限次
类别 控制类积木
形狀 半框形积木

重複無限次 积木 是一個 控制类积木 和一個 半框形积木。 在這個方塊之中的積木會在迴圈被執行時執行, —就如同 重复 () 次 積木和重复直到 () 積木, 只是這個迴圈永遠不會停止 (除非 停止标志 被點擊或 停止全部 積木被觸發, 又或者 停止程式 在迴圈中積木被觸發). 由於這個積木是一個無線迴圈, 它的底部沒有一個突出的接口; 擁有一個接口並不會有任何的意義, 因為接在它下面的積木用遠不會被觸發。

這個積木有一個微小的延遲,所以為了在運行時有最佳的速度, single frame block stacks 應該被使用。

An example of the behavior of a forever loop

用法示例

重複無限次積木是 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.

参见

Cookies help us deliver our services. By using our services, you agree to our use of cookies.