1

我想做一个游戏的学分屏幕,但学分包含一系列图像。我找不到允许我插入多个图像并滚动它们的容器,所以我创建了一个带有按钮的 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;
    }

如您所见,我对此类进行了更新,并基于该列表框滚动到列表的下一个索引中的按钮(视图),但是我尝试获得的滚动更平滑且更多电影般的。我不知道我是否使用了正确的容器,或者我的算法是否有问题,任何形式的帮助都将不胜感激[:

4

2 回答 2

0

本文提供了一些示例,说明如何在 ScrollViewer 中设置滚动动画。为你的学分长度选择一个合适的时间跨度,并将 VerticalOffset 动画化到最后。

于 2012-09-14T16:44:45.237 回答
0

尝试改用该ScrollToVerticalOffset方法。这允许您以像素精度滚动。

于 2012-09-14T05:32:31.813 回答