0

这是我在 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();
        }
    }

我有一个文本/字符串列表和一个按钮,比如NextButton在 MainPage.xaml 上。该updateText方法在 的点击事件中NextButton,它的作用是从文本/字符串列表中获取文本并使用动画效果更新文本块。

但我意识到,当我继续点击 时NextButton,好像 的值TEXT_TIMER在减少,动画效果发生得更快,直到不再有动画(即文本只是出现在文本块中,没有任何效果)。

任何人都知道为什么会发生这种情况以及我该如何解决?

编辑:我已经包含了在文本块更新后停止计时器的代码,希望能够解决可能的多个 Tick 回调,但仍然没有。

4

2 回答 2

0

不是TEXT_TIMER价值在减少,而是_textTimer没有停止,所以你有多个计时器滴答声。
尝试_textTimer.Stop()在方法的开头添加updateText()

于 2013-08-27T15:17:55.947 回答
0

根据丹·布莱恩特的建议:

我的程序流程多次注册 Tick 事件,因为我将它放入updateText程序运行期间多次调用的方法中。我所要做的就是将注册 Tick 事件的那行代码移动_textTimer.Tick += _textTimer_Tick;到构造函数中,即在InitializeComponent()问题解决之后!

于 2013-08-27T16:06:56.230 回答