我的首个silverlight软件—幸运转盘

        这次公司要求做一个转盘抽奖游戏,后台程序不难,几天完工,但是前台的转盘难倒了我。我主要是做后台程序的,美工之类的很是差劲。刚开始想借助 络的力量,下载一个开源的转盘就可以了。但是, 上的软件要么不泄露源码要么收费。经过再三考虑决定用silverlight做一个。

       先说一下思路,做两张图片,底部是一个转盘,上部覆盖一张透明的指针图片。然后让转盘图片旋转,指针固定,经过一段时间后,转盘图片停在某个角度。同时显示一个中奖提示。

       下面是个人的核心代码:

        
       
               
                   
               

       
       
           
               
                   
               

           

       
       
       
   

          然后写一下button的单击事件处理函数:

     private void play_Click(object sender, RoutedEventArgs e)
        {
            play.Visibility = Visibility.Collapsed;
            myDispatcherTimer.Start();
            if (this.gift != Gift.未中奖)
            {
                play.Click -= new RoutedEventHandler(play_Click);
                play.Click += new RoutedEventHandler(Nav_Click);
            }
        }
        private void Nav_Click(object sender, RoutedEventArgs e)
        {
            HtmlWindow html = HtmlPage.Window;
            html.Navigate(new Uri(“Client/Updatemail=” + email, UriKind.Relative));
        }

     在这个事件当中,设置了一个DispatcherTimer,下面是该timer的tick函数:

      private void Timer_Tick(object sender, EventArgs e)
        {
            if (speed > 15)
                speed–;
            else
            {
                if (speed                     speed++;
            }
            myTransform.Angle = (myTransform.Angle + speed);
            startTime = startTime.AddMilliseconds(50);
            if (startTime.CompareTo(endTime) != -1)
            {
                if (gift == Gift.一等奖)
                {
                    myTransform.Angle += 9;
                    myDispatcherTimer.Tick -= new EventHandler(Timer_Tick);
                    myDispatcherTimer.Tick += new EventHandler(Timer_Tick_three);
                    end.Content = “恭喜您中得一等奖,请点击顶部按钮填写信息以方便客服联系您!”;
                }
                else if (gift == Gift.二等奖)
                {
                    myTransform.Angle += 3;
                    myDispatcherTimer.Tick -= new EventHandler(Timer_Tick);
                    myDispatcherTimer.Tick += new EventHandler(Timer_Tick_three);
                    end.Content = “恭喜您中得二等奖,请点击顶部按钮填写信息以方便客服联系您!”;

                }

                else if (gift == Gift.三等奖)
                {
                    this.count = -1;
                    myTransform.Angle += 14;
                    myDispatcherTimer.Tick -= new EventHandler(Timer_Tick);
                    myDispatcherTimer.Tick += new EventHandler(Timer_Tick_three);
                    end.Content = “恭喜您中得三等奖,请点击顶部按钮填写信息,以方便客服联系您!”;
                }
                else
                {
                    myDispatcherTimer.Stop();
                    end.Content = “谢谢参与,您未中奖!”;
                    end.Visibility = Visibility.Visible;
                }
            }
        }

      //本函数用来微调角度,以固定到某个奖品上面

        private void Timer_Tick_three(object sender, EventArgs e)
        {
            myTransform.Angle += 8;
            this.count++;
            if (this.count == 3)
            {
                play.Visibility = Visibility.Visible;
                play.Content = “填写信息”;
                myDispatcherTimer.Stop();
                end.Visibility = Visibility.Visible;

            }
        }

      最后,该sl程序需要接收两个参数,在app.xaml.cs中修改如下:

     private void Application_Startup(object sender, StartupEventArgs e)
        {
            MainPage page = new MainPage(e.InitParams[“gift”].ToString().Trim(), e.InitParams[“email”].ToString().Trim());
            this.RootVisual = page;
        }

      这两个参数需要在调用xap的页面中设置:

    

      好了,大功搞成!

      下面是效果图:

       

2011033016491771.jpg

相关资源:最强劲的加密软件TrueCrypt_Setup_7.1a_最强劲的越野车- 络攻防…

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2011年2月26日
下一篇 2011年2月26日

相关推荐