我想做一个游戏的学分屏幕,但学分包含一系列图像。我找不到允许我插入多个图像并滚动它们的容器,所以我创建了一个带有按钮的 ListBox。这些按钮只有一个图像并且不可点击,所以它们就像图像一样。至于将图像放在允许我滚动它的容器中,已经涵盖了。当我希望它们自动滚动时,问题就来了,我在网上发现了一系列自动滚动 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;
}
如您所见,我对此类进行了更新,并基于该列表框滚动到列表的下一个索引中的按钮(视图),但是我尝试获得的滚动更平滑且更多电影般的。我不知道我是否使用了正确的容器,或者我的算法是否有问题,任何形式的帮助都将不胜感激[: