关于触发和更新Manipulate表达式的问题

时间:2011-09-02 12:02:27

标签: wolfram-mathematica

专家,

我无法弄清楚为什么每次点击属于Trigger控件的'StepRightButton'时,Manipulate表达式被评估2次。

当我点击“+”按钮时,我看到计数器按预期上升了一次,但表达式正在评估2次,而不是按预期计算一次。这是一个小例子

Manipulate[

Show[
Graphics@Text@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'表达式将评估一次。

这是一种确保每次单击“+”一次评估表达式的方法吗?

感谢,

1 个答案:

答案 0 :(得分:8)

这可以通过向PerformanceGoal -> "Quality"函数添加选项Plot来解决。

在显示受操作项目期间,可以根据PerformanceGoal设置显示对象的较低保真度样本。如有必要,在操作结束时绘制更高保真度的版本。这是后来的重绘,这似乎导致了这里的问题。