我想为游戏制作积分屏幕,但积分包含一系列图像。我找不到允许我插入多个图像并滚动它们的容器,所以我创建了一个带有按钮的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;
}
正如你所看到的,我做了类似这个类的更新,并基于列表框滚动到列表的下一个索引中的按钮(视图),但是我想要获得的滚动是更流畅,更像电影。我不知道我是否正在使用正确的容器,或者如果我的算法有什么不好的地方,我会非常感激任何一种帮助[:
答案 0 :(得分:0)
请尝试使用ScrollToVerticalOffset
方法。这允许您以像素精度滚动。
答案 1 :(得分:0)
This article有一些如何在ScrollViewer中设置滚动动画的示例。为学分的长度选择一个好的时间跨度,并将VerticalOffset设置为最终的动画。