我想我在这里遗漏了一些东西。我有超级简单的情况,我想用旗作为信号量。如果我按[绿色标志]设置值回到0工作就好了。如果我按[空格],播放声音后不会设置标志。我在这里错过了什么吗?消息处理程序中发生了什么是否被下一次调用消息处理程序所取代?
答案 0 :(得分:2)
问题在于如何调用消息。
我对你的代码做了这个测试。
当循环触发消息时,计数器会递增,显示触发发生的次数。
我做的第一次压条,'测试'增加到超过4000.换句话说,消息被激活超过4000次!我是一个慢打字员,但事件很快。
现在看来,在Scratch中,每个消息广播都会中断前一个消息。作为播放声音'如果执行时间很长,则message1永远不会中断,最终指令永远不会执行,而flag2也不会设置为0。
有几种解决方法:
将标志设置置于if范围之外。当第二条消息中断第一条消息并运行时,它会将标志置零。
使用'并等待'确保当前消息不会被新消息中断。因此没有中断,消息完全执行。
避免消息。使用临时自己的事件循环。你是否真的需要循环才能为1键按下4,000条消息?让Scratch以其方式处理事件。