广播消息与接收消息(第2部分)
-
先修科目
介绍
在另一篇文章,大家已经学习了如何广播消息与接收消息。
有些使用消息的高级方式,我们将在本文章中讨论。
带参数的消息
当我们广播消息时,可选择附加一个参数。这样我们就可以重新使用同一种消息。
例如这个项目,角色科迪问用户要转几次。如果用户回答“1”,科迪就广播消息“转1次”,另外2个角色就转1次。同理,如果用户回答“2”或“3”,科迪就广播消息“转2次”、“转3次”,另外2个角色同样会响应这个消息。
尽管这个程序能够运行,但有个问题。用户有可能输入任意数字,比如10、100。为了正确处理所有回答,我们要添加很多种消息:“转4次”、“转5次”……“转10次”……“转100次”……
好在你不必这么做。你只需发送一条消息“转向”,然后再添加一个参数,就是转向次数:
当其他角色收到这条消息,它们可以设置一个变量,那个参数就存入这个变量。例如,如果科迪广播消息“转向”,并且带参数10,然后螃蟹收到消息“转向”,数值10就存入一个新变量。之后,这个变量就用来控制转几次。
同理,当甲虫收到消息“转向”,就把这个参数存入另一个变量:
现在程序不仅简洁明了,还能响应任意的转向次数!
注意,利用这个积木,你可以把“等待”与“参数”结合起来。
消息只发送至一个角色
对于另一个更高级的方式,你可以把消息只发送至一个角色,而不是所有角色。如果你想让一些隐私消息仅对2个角色之间可见,就适合用这个积木。
例如,在上方例子中,你可以把积木“广播”换成积木“发送”:
角色转动过快,为了看清角色转动过程,使角色每转1次等待0.3秒。
结果,只有螃蟹会响应这条消息: