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();
        }
    }

NextButtonMainPage.xaml には、テキスト/文字列のリストとボタンもあります。メソッドはのupdateTextクリック イベントにありNextButton、テキスト/文字列のリストからテキストを取得し、アニメーション効果を使用してテキストブロックを更新します。

しかし、 をクリックし続けるとNextButton、 の値TEXT_TIMERが減少し、アニメーション効果が急速に発生し、アニメーションがなくなる (つまり、テキストが効果なしでテキストブロックに表示される) ことに気付きました。

なぜこれが起こっているのか、どうすれば修正できるのか、誰にもわかりませんか?

編集:テキストブロックが更新された後にタイマーを停止するコードを含めましたが、可能性のある複数の Tick コールバックを解決することを期待していますが、まだ何も解決していません。

4

2 に答える 2

0

ダン・ブライアントのアドバイス:

updateText私のプログラムフローは、プログラムの実行中に複数回呼び出されたメソッドにそれを入れたため、Tickイベントに複数回登録していました。私がしなければならなかったのは、Tick イベントが登録されているコード行を_textTimer.Tick += _textTimer_Tick;コンストラクターに移動することだけでしたInitializeComponent()

于 2013-08-27T16:06:56.230 に答える
0

TEXT_TIMER値が減少しているわけで_textTimerはありませんが、停止していないため、複数のタイマーティックがあります。メソッドの先頭に
追加してみてください。_textTimer.Stop()updateText()

于 2013-08-27T15:17:55.947 に答える