我需要我的随机值看起来像是在滚动C#

时间:2016-06-02 11:59:33

标签: c# random label

我有五个骰子标签,我有一个方法Roll()设置它们 文字价值。在滚动方法发生的那一刻,它只是使数字出现,但我希望它们看起来像是在滚动。

这就是我所拥有的

//Roll() simulates the rolling of this die. 
    public void Roll()
    {
        if (Active) {

            faceValue = random.Next(1, 7);

            label.Text = faceValue.ToString();
        }

    }
从另一个类调用

Roll()

for (int i = 0; i < dice.Length; i++){
            dice[i].Roll();
        }

我的问题是:

我怎么能让它看起来像是在滚动一组数字然后停在一个数字上?

2 个答案:

答案 0 :(得分:0)

试试这个

public async void Roll()
    {
        if (Active)
        {
           for (int i=0;i<20;i++) //Number of rolls before showing final
           {
               await Task.Delay(100);
               label.Text = random.Next(1, 7).ToString();
            }
        }
    } 

答案 1 :(得分:0)

我测试了一点Little,这在WPF中看起来很好用DispatcherTimer

    DispatcherTimer timer = new DispatcherTimer();
    private void Button_Click(object sender, RoutedEventArgs e)
    {
        timer.Tick += Roll;
        timer.Interval = new TimeSpan(1);

        Random r = new Random();
        timer.Start();
    }

    Random r = new Random();
    public void Roll(object sender, EventArgs e)
    {
        increment++;
        if (increment >= 250)
        {
            timer.Stop();
            increment = 0;
        }
        DiceLabel.Content = r.Next(1, 7).ToString();
        timer.Interval = new TimeSpan(increment*3000);
    }

如果您希望它更快或更长,您可以使用以下值来播放:

timer.Interval = new TimeSpan(increment*3000);

此处设置显示新号码之间的时间。

在骰子滚动的时候,你可以玩:

if (increment >= 250)

希望有所帮助,玩得开心。