2014-02-18 70 views
2

在我的HubNet應用程序中,每個客戶端都可以訪問滑塊,他或她可以用它來猜測問題的答案。我使用命令NetLogo HubNet Slider值

set slider-value 0 

爲了重置問題之間的滑塊。但是,這似乎只是將與滑塊關聯的全局變量設置爲0,而不是參與者操縱的滑塊。如何更改滑塊本身(從服務器)?

這對參與者來說當然是非常令人困惑的,因爲如果他或她在移動滑塊之前擊中猜測按鈕,她的猜測將等於全局變量,無論滑塊當前設置爲什麼。

回答

3

我認爲這裏混亂的一個原因是HubNet系統是一個「瘦」或「啞」的客戶端系統。

特別是,客戶端沒有任何意識到其界面元素的含義。因此,您的想法(在NetLogo服務器上更新變量,並期望客戶端將被通知與該變量[其含義]相對應的界面元素將被更新)。

相反,您的NetLogo模型需要管理含義及其含義。所以,「滑塊值」變量會發生變化。然後主機需要告訴客戶更新他們的界面元素。您可以通過發出hubnet-send命令來完成此操作。

例如,假設HubNet客戶端被稱爲「joe」,客戶端界面中的滑塊被稱爲「my-slider」,並且相關變量如您所說滑塊值您將然後編寫

hubnet-send "joe" "my-slider" slider-value 

通常,在HubNet模型中,有一種與客戶端(稱爲「學生」或「客戶端」)相關聯的烏龜品種,並且這些客戶端有一個跟蹤HubNet客戶端標識符的變量(比如說變量是「my-id」)。然後,一次更新所有客戶的滑塊,你會說...

ask clients [ 
    hubnet-send my-id "my-slider" slider-value 
] 
+0

謝謝。我會試試這個。你是一塊石頭。 – ProfessorHelloKittyNr1

+1

它的工作原理!謝謝。 – ProfessorHelloKittyNr1