ゲームのクレジット画面を作りたいのですが、クレジットは一連の画像で構成されています。複数の画像を挿入してスクロールできるコンテナーが見つからなかったので、ボタンを含む 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;
}
ご覧のとおり、このクラスの更新のようなことを行い、リストボックスがリストの次のインデックスにあるボタン (ビュー) にスクロールすることに基づいていますが、取得しようとしているスクロールはよりスムーズでより多くの映画のような。正しいコンテナを使用しているかどうか、またはアルゴリズムに何か問題があるかどうかはわかりません。どんな種類の助けも非常に高く評価されます[: