我有五个骰子标签,我有一个方法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();
}
我的问题是:
我怎么能让它看起来像是在滚动一组数字然后停在一个数字上?
答案 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)
希望有所帮助,玩得开心。