在我的 HubNet 应用程序中,每个客户都可以访问一个滑块,他或她可以使用该滑块来猜测问题的答案。我使用命令
set slider-value 0
为了重置问题之间的滑块。但是,这似乎只是将与滑块关联的全局变量设置为 0,而不是参与者操作的滑块。如何更改滑块本身(从服务器)?
这对于参与者来说当然是非常混乱的,因为如果他或她在移动滑块之前点击了猜测按钮,那么无论滑块当前设置为什么,她的猜测都将等于全局变量。
我认为这里造成混淆的一个原因是 HubNet 系统是一个“瘦”或“哑”的客户端系统。
特别是,客户端不知道其界面元素的含义。因此,您的想法(更新 NetLogo 服务器上的变量并期望客户端将被通知对应于此变量的界面元素 [其含义] 将被更新)。
相反,您的 NetLogo 模型需要管理含义及其含义。因此,“滑块值”变量发生了变化。然后主机需要告诉客户端更新他们的界面元素。您可以通过发出hubnet-send
命令来做到这一点。
例如,假设 HubNet 客户端名为“joe”,客户端界面中的滑块名为“my-slider”,相关变量为,如您所说,slider-value 那么您将编写
hubnet-send "joe" "my-slider" slider-value
通常,在 HubNet 模型中,有一种海龟与客户端(比如“学生”或“客户”)相关联,这些客户端有一个变量来跟踪 HubNet 客户端的标识符(比如这个变量是“my- ID”)。然后,要一次更新所有客户的滑块,您会说...
ask clients [
hubnet-send my-id "my-slider" slider-value
]