簡體   English   中英

XNA / Silverlight中的自動滾動ListBox

[英]Autoscroll ListBox in XNA/Silverlight

我想為游戲制作積分屏幕,但是積分由一系列圖像組成。 我找不到允許我插入多個圖像並滾動它們的容器,因此我創建了一個帶有按鈕的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;
    }

如您所見,我對該類進行了類似的更新,並基於此列表框滾動到列表的下一個索引中的按鈕(視圖),但是我嘗試進行的滾動更平滑,更流暢電影般。 我不知道我是否使用了正確的容器,或者我的算法是否存在問題,所以非常感謝您提供任何幫助[:

嘗試改用ScrollToVerticalOffset方法。 這使您可以以像素精度滾動。

本文提供了一些示例,說明如何在ScrollViewer中動畫化滾動。 為您的信用期選擇一個合適的時間范圍,然后將VerticalOffset設置為動畫。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM