[英]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.