手机号中的各个数字都是滚动的,能配背景音乐,不知道哪位大侠能帮帮忙不~~~或者有其他的方案也行,,谢谢啦

解决方案 »

  1.   


    其实,抽奖算法就是随机数的应用,瞬间完成。你在电视上看到滚动的那个,只是视觉噱头。你用 Timer 就可以实现这样的功能。
      

  2.   

    本帖最后由 bcrun 于 2012-07-20 09:29:29 编辑
      

  3.   

    本帖最后由 bcrun 于 2012-07-20 09:37:47 编辑
      

  4.   

    我的备选手机号为130个左右,
    Loop Until i <> Combo1.ListIndex And i < Combo1.ListCount And Combo1.ItemData(i) = 0这条语句会出现“无效属性数组索引”错误
    怎么回事呢?
      

  5.   

    试试:Do
    Do
      i = Rnd * Combo1.ListCount
    Loop Until i < Combo1.ListCount 
    Loop Until i <> Combo1.ListIndex And Combo1.ItemData(i) = 0Combo1.ListIndex = i
    Combo1.ItemData(i) = 1
      

  6.   

    是啊,都显示过了,就死循环了。所以说,你的手机号必须足够多。1 秒种滚动 20 个,你那 130 个手机号也就滚 6.5 秒。实际上,外层判断也不必检查是否与当前记录相同了,因为不允许重复:Do
    Do
    i = Rnd * Combo1.ListCount
    Loop Until i < Combo1.ListCount 
    Loop Until Combo1.ItemData(i) = 0Combo1.ListIndex = i
    Combo1.ItemData(i) = 1要不,你就滚慢点儿。1 秒滚 5 个,够滚 26 秒。不允许重复的问题,在于对先滚到的手机号,也就是已经看到的手机号不公平。因为停的时候,一定没他神马事了。
      

  7.   


    还有,每次重新滚动之前,要将所有记录的 ItemData 清零:For i = 0 To Combo1.ListCount - 1
      Combo1.ItemData(i) = 0
    Next i
      

  8.   

    使用随机数函数Rnd,必须设置随机种子randomize(),不然程序打开后会重复
      

  9.   

    其实我觉得这个本身设计是不是有点问题呀,是不是不要用Combobox。把所有数据读进来,让到一个数组里面去。
    让这些手机号死命滚动,然后停,出现过一次的,就做个标记,下次不能再出现了,然后让剩余的再死命滚动,然后依此类推这样公平吧~~
      

  10.   


    你想用数组,当然可以。不过,VB 的精髓就是使用控件来简化代码。你觉得使用数组和 Combo 控件在逻辑上有什么本质的区别吗?Combo 的 ItemData 在这里就是标记。看问题,要看本质,也就是逻辑。具体实现是次要的。
      

  11.   

    本帖最后由 bcrun 于 2012-07-20 09:44:39 编辑
      

  12.   

    添加音乐的话,再加一个 Windows MediaPlayer 控件,属性设置成隐藏,自定义里添加音乐文件的地址,设成自动启动,打开程序的话就自动播放了。