【问题标题】:Autoscroll ListBox in XNA/SilverlightXNA/Silverlight 中的自动滚动列表框
【发布时间】:2012-09-13 23:42:25
【问题描述】:

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

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

【问题讨论】:

    标签: c# silverlight xna autoscroll credits


    【解决方案1】:

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

    【讨论】:

    • 我刚刚尝试过,但是当列表框到达末尾时,我无法将其向上滚动。另外,如何知道何时到达列表框的末尾?
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-07-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多