Scratch中的可破坏循环?

Flo*_*rie 7 loops mit-scratch

你如何在Scratch中创建一个可破坏的循环?我正在使用Scratch 2.0,并且无法从循环内部找到任何可以使循环易碎的好方法.

Flo*_*rie 9

免责声明:

没有完美的方法来做到这一点.如果你可以忍受这个真实的事实,那么随时可以继续.


有几种不同的方法可以做到.

repeat until

第一个也是最简单的一个是:

scratchblocks

但这在技术上并不是脚本的一部分 - 它只是重复,直到某个值返回true.

使用自定义块(stop this script)

为了在脚本内部执行此操作,您需要使用自定义块的偷偷摸摸的小技巧.

创建一个名为你想要的自定义块 - 但可能是"易碎循环".在其中,创建此脚本:

scratchblocks

通过使用stop script我们正在打破当前正在运行的脚本 - 根据Scratch,它是自定义块.

看到结果!(作为临时块)

broadcast and wait

您还可以使用广播等待方法,与上面非常类似:

scratchblocks

虽然我强烈建议你不要使用这种方法,好像任何其他精灵都有可破坏的循环,你需要重命名每一个,这在很多精灵中使用了很多循环后会很乏味!


(请注意,编辑器的版本442中已修复此错误,因此以下内容不再适用.)

救命!我的项目现在已经落后了!

作为@foi已经注意到,如果你的代码必须在一个框架内运行,你可能被查无屏幕刷新运行.不幸的是,由于Scratch播放器中的一个错误,这会导致程序在stop this script块激活后基本上中断.你怎么能处理这个?

它遵循您在forever循环内使用没有屏幕刷新自定义块的运行时使用的相同原则- 循环不使用内部屏幕刷新,允许即时动画,无论是否使用turbo模式.

这是一个例子 - 图像实际上太长而无法嵌入,所以请在此处查看.