这是我在MainPage.xaml.cs中创建的文本动画效果:
private readonly double TEXT_TIMER = 30.0;
private int index;
private void updateText(String text)
{
_text = text;
index = 0;
MainTextBlock.Text = "";
_textTimer.Tick += _textTimer_Tick;
_textTimer.Interval = TimeSpan.FromMilliseconds(TEXT_TIMER);
_textTimer.Start();
}
private void _textTimer_Tick(object sender, EventArgs e)
{
if (index < _text.Length)
{
string s = _text[index].ToString();
MainTextBlock.Text += s;
index++;
}
else
{
_textTimer.Stop();
}
}
我有一个文本/字符串列表以及一个按钮,在MainPage.xaml上说NextButton
。 updateText
方法位于NextButton
的点击事件中,其作用是从文本/字符串列表中获取文本,并使用动画效果更新文本块。
但我意识到,当我继续点击NextButton
时,好像TEXT_TIMER
的值正在减少,动画效果发生得更快,直到没有动画(即文本只出现在文本块中而没有任何影响)。
任何人都知道为什么会发生这种情况以及如何解决这个问题?
修改: 我已经包含了代码,以便在文本块更新后停止计时器,希望能够解决可能的多个Tick回调,但仍然没有。
答案 0 :(得分:0)
TEXT_TIMER
值并没有减少,但_textTimer
没有停止,所以你有多个计时器滴答。
尝试在_textTimer.Stop()
方法的开头添加updateText()
。
答案 1 :(得分:0)
关于Dan Bryant's建议:
我的程序流多次注册Tick事件,因为我将它放入updateText
方法中,该方法在程序运行期间被多次调用。我所要做的就是将Tick事件注册的代码行_textTimer.Tick += _textTimer_Tick;
移到构造函数中,即在InitializeComponent()
之后解决问题!