1

ゲームのクレジット画面を作りたいのですが、クレジットは一連の画像で構成されています。複数の画像を挿入してスクロールできるコンテナーが見つからなかったので、ボタンを含む ListBox を作成しました。これらのボタンには画像のみがあり、クリックできないため、単なる画像のように機能します。画像をスクロールできるコンテナに入れる限り、すでにカバーされています。問題は、それらを自動スクロールさせたいときに発生します。Web で一連の ListBox の自動スクロールを見つけましたが、やりたいことには何も適合しないようです。

ここに私が持っているものがあります:

このクラスのグローバル変数

    GameTimer _timer = null;
    int _currentIdx = 0;
    int _elapsedTime;
    const int TIMER_DELAY_IN_MILLIS = 1000;

アプリケーションがこのページに移動すると:

    protected override void OnNavigatedTo(System.Windows.Navigation.NavigationEventArgs e)
    {
        _elapsedTime = 0;
        _timer = new GameTimer();
        _timer.UpdateInterval = TimeSpan.FromTicks(333333);
        _timer.Update += OnUpdate;
        _timer.Start();

        base.OnNavigatedTo(e);
    }

アプリケーションの更新時:

    private void OnUpdate(object sender, GameTimerEventArgs e)
    {
        if (_elapsedTime > TIMER_DELAY_IN_MILLIS)
        {
            _elapsedTime -= TIMER_DELAY_IN_MILLIS;
            Credits.UpdateLayout();
            Credits.ScrollIntoView(Credits.Items[_currentIdx]);
            System.Diagnostics.Debug.WriteLine("" + _currentIdx + " Update: " + e.ElapsedTime);

            _currentIdx = ++_currentIdx % Credits.Items.Count;
        }
        _elapsedTime += e.ElapsedTime.Milliseconds;
    }

ご覧のとおり、このクラスの更新のようなことを行い、リストボックスがリストの次のインデックスにあるボタン (ビュー) にスクロールすることに基づいていますが、取得しようとしているスクロールはよりスムーズでより多くの映画のような。正しいコンテナを使用しているかどうか、またはアルゴリズムに何か問題があるかどうかはわかりません。どんな種類の助けも非常に高く評価されます[:

4

2 に答える 2

0

この記事には、ScrollViewer でスクロールをアニメーション化する方法の例がいくつかあります。クレジットの長さに適したタイムスパンを選択し、VerticalOffset を最後までアニメーション化します。

于 2012-09-14T16:44:45.237 に答える
0

ScrollToVerticalOffset代わりにメソッドを使用してみてください。これにより、ピクセル精度でスクロールできます。

于 2012-09-14T05:32:31.813 に答える