2011-09-02 53 views
4

專家更新,問題和操縱表達

我不能找出爲什麼操縱表達正被評估每次我點擊「StepRightButton」,這是一個觸發控制的一部分的2倍。

當我點擊'+'按鈕時,我發現計數器按預期增加了一次,但表達式正在評估2次,而不是預期的一次。這裏是一個小例子

Manipulate[ 

Show[ 
[email protected]@Row[{currentTime," ",Date[]}], 
Plot[Sin[x],{x,-Pi,Pi}] 
], 

Control[{{currentTime,0,Style["run",10]},0,100,0.1, 
     ControlType->Trigger,DisplayAllSteps->True,ImageSize->Tiny, 
     AnimationRate->Automatic,AnimationRepetitions->0, 
     AppearanceElements->{"PlayButton","PauseButton","StepRightButton","ResetButton"}} 
], 

ContinuousAction->False, 
SynchronousUpdating->False 

] 

再次,點擊「+」表示「currentTime的」變量被增加了正確的量(0.1在本例中)。但是我的問題是,爲什麼表達式會被證據顯示兩次,每次點擊'+'按鈕都會看到Date []打印增加2次。

這會導致我的問題,因爲我假設表達式會每'tick'評估一次。

這是一種確保每次點擊「+」一次後評估表達式的方法嗎?

感謝,

回答

7

這可以通過添加選項PerformanceGoal -> "Quality"Plot功能來解決。

在顯示操作項目的過程中,可以根據PerformanceGoal設置顯示對象的低保真度樣本。必要時,在操作結束時繪製更高的逼真版本。這是後來重繪,這似乎是在這裏造成的問題。

+0

非常好!我不知道有什麼叫做「如果有必要,在操縱結束時畫出更高的逼真度」。我從來沒有聽說過這樣的事情。我認爲有一些動態或時間問題,但不是我能看到的。這些東西是否記錄在某處?這是否僅適用於繪圖?謝謝! – Nasser

+0

在tutorial/AdvancedDynamicFunctionality中有這方面的內容。請參閱'ControlActive' –

+2

@Nasser ...並且不要忘記'PerformanceGoal'和'$ PerformanceGoal'的文檔頁面。在後者中,您會發現:* $ PerformanceGoal的典型默認值是ControlActive [「Speed」,「Quality」]。* –