-1

この問題と3時間ほど戦っていましたが、ようやく専門家に聞いてみる時が来たと思いました。

私の問題は、スクロールバーを作成したいということです。2つの整数を使用して作成し、リスト内のすべてのアイテムにIDを付けて、IDを持つすべてのアイテムが2つの整数の間に表示され、その後、整数を+または-する2つのボタンを作成して、アイテムを「スクロール」できるようにします。

それで、これを実現するために、ダミーコードを作成して、それをどのように実行できるかを確認することにしました。そして、ほとんどの場合、その動作は問題ですが、描画機能が常に画面を更新しているように見えます(それが確実に行われるようにブール値を入れましたが)、それを行うことで消去し続けます画面に表示している番号。

コードは次のとおりです。

List<int> test = new List<int>() {1,2,3,4,5,6,7 };

        int low = 0;
        int high = 3;
        int count;
        bool isDone = false;

 public override void Draw(GameTime gameTime)
        {
spriteBatch.Begin(SpriteSortMode.Deferred, BlendState.AlphaBlend, SamplerState.PointClamp, null, null, null);

if (!isDone)
            {
                int posX = 20;
                foreach (int nr in test)
                {

                    if (count == high)
                    {
                        isDone = true;
                        break;

                    }
                    else
                    {
                        count++;
                    }
                    if (count >= low && count <= high)
                    {
                        posX += 20;
                        spriteBatch.DrawString(gameFont, nr.ToString(), new Vector2(posX, 20), Color.White);
                    }
                }
            }

 spriteBatch.End();

}

うまくいけば、あなたの賢い人々の何人かは私が見逃していた間違いに目を向けることができます。

前もって感謝します

〜Etarnalazure。

4

1 に答える 1

2

カウンターをリセットすることはありません。したがって、数字は最初のフレームにのみ表示されます。追加

count = 0;

forループの前。

さらに、構造を修正することもできます。List <>を使用する場合、すべてのアイテムにはすでにインデックスがあります。また、forループを使用する場合は、すべてのアイテムを繰り返す必要はありません。

for(int i = low; i <= high; ++i)
{
    var currentItem = list[i];
}
于 2012-07-15T17:19:29.370 に答える