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