2

在我的 HubNet 应用程序中,每个客户都可以访问一个滑块,他或她可以使用该滑块来猜测问题的答案。我使用命令

set slider-value 0

为了重置问题之间的滑块。但是,这似乎只是将与滑块关联的全局变量设置为 0,而不是参与者操作的滑块。如何更改滑块本身(从服务器)?

这对于参与者来说当然是非常混乱的,因为如果他或她在移动滑块之前点击了猜测按钮,那么无论滑块当前设置为什么,她的猜测都将等于全局变量。

4

1 回答 1

3

我认为这里造成混淆的一个原因是 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
]
于 2014-02-19T19:31:35.353 回答