• 2回复贴,共1

动画设计&播放器

只看楼主收藏回复

(一)动画设计
1)需要:2个button,1个statuscrips,1个imagelist,1个timer
2)设计界面:

3)步骤:
1、添加动画图片到Imagelist中
2、实现从ImageList中读取图片到picturebox,由于动画是通过一系列连贯动作的图片连续快速播放实现,所以读取图片的实现应该写在计时器的Tick事||件中:
     Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
         PictureBox1.Image = ImageList1.Images(x)
         x = x + 1
         If x >= ImageList1.Images.Count Then
             x = 0                       ‘如果顺序播放结束则从头开始
         End If
     End Sub
变量X是从0开始的图片编号,因此需要在开始部分予以定义:
Dim x As Integer
     Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
         Timer1.Enabled = True            ‘启动计时器
         Timer1.Interval = 100            ‘定义0.1s切换一张图片
         x = 0                              ‘定义X从第一张开始
End Sub
加速按钮事||件代码:
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
         Timer1.Interval = Timer1.Interval – 20
If Timer1.Interval < 100 Then
             ToolStripStatusLabel1.Text = "太快了把我累死了!"
         End If
         If Timer1.Interval = 100 Then
             ToolStripStatusLabel1.Text = ""
         ToolStripStatusLabel1.Text = "太快了把我累死了!"
   End If
If Timer1.Interval <= 20 Then
             Button1.Enabled = False
         End If
End Sub
减速按钮事||件代码:
Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
Button1.Enabled = True
         Timer1.Interval = Timer1.Interval + 20
If Timer1.Interval > 100 Then
             ToolStripStatusLabel1.Text = "太慢了保持不住啦!"
         End If
         If Timer1.Interval = 100 Then
             ToolStripStatusLabel1.Text = ""
         ToolStripStatusLabel1.Text = "太慢了保持不住啦!"
   End If
End Sub



1楼2011-01-05 12:50回复
    (二)制作播放器
    设计思路:
    A、使用Windows Media Player控件播放影音文件
    B、使用Listbox控件存放选择的影音文件
    C、使用OpenFileDialog控件选择影音文件
    D、使用rnd()函数产生随机数来实现随机播放
    2、需要:1个listbox,3个button,1个timer,1个openfiledialog
    3、设计界面:

    4、知识准备:
    1、添加Windows Media Player控件。
        该控件不在工具箱中,必须通过Active控件添加。Active控件可以简单理解为能够实现特定功能的控件,存放在C:\Windows\System32中。
        在设计视图状态下,在工具箱中右键鼠标,选择“选择项”命令,打开“选择工具箱”对话框,打开“COM组件”选项卡,从中选择“Windows Media Player”,即可添加到工具箱中了。
    需要:3个button,1个listbox,1个openfiledialog,1个timer
    步骤:“添加歌曲”按钮:设置OpenFileDialog1的Multiselect属性为True
    Public Class Form1
         Dim random_mode As Boolean
         Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
          OpenFileDialog1.Filter = "*.mp3;*.wav;*.avi|*.mp3;*.wav;*.avi|所有文件|*.*"
          OpenFileDialog1.FileName = ""
          OpenFileDialog1.ShowDialog()
          If OpenFileDialog1.FileName <> "" Then
                 ListBox1.Items.Addrange(OpenFileDialog1.FileNames)
           Else
                 MessageBox.Show("请选择文件!", "提示")
           End If
    End Sub
    “顺序播放”按钮:
       Private Sub Button2_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button2.Click
             If ListBox1.Items.Count = 0 Then
                 Return                        ‘判断列表项目,为空则返回       
             End If
             AxWindowsMediaPlayer1.URL = ListBox1.Items(0).ToString
             ‘播放列表中的第一个文件
    End Sub
    以上代码只实现单曲播放,要实现连续播放则还需要用到Windows Media Player控件的PlayStateChange事||件,该事||件在播放当前文件状态改变时触发程序,比如播放结束。但是响应PlayStateChange事||件时直接改变播放器的URL无法让它直接播放下一曲,解决方法是满足一首歌曲结束的条件时唤醒计时器,计时器100ms内响应函数timer1_Tick事||件,在该过程中实现下一首歌曲的选择,播放可以顺利进行。
    Private Sub AxWindowsMediaPlayer1_PlayStateChange(ByVal sender As System.Object, ByVal e As AxWMPLib._WMPOCXEvents_PlayStateChangeEvent) Handles AxWindowsMediaPlayer1.PlayStateChange
    


    2楼2011-01-05 12:51
    回复
      2025-06-20 21:06:49
      广告
               If AxWindowsMediaPlayer1.playState = WMPLib.WMPPlayState.wmppsStopped Then
      ‘以上代码表示当一个文件播放结束(停止)时触发计时器开始
                   Timer1.Start()
               End If
      End Sub
      触发计时器必然的要写Tick事||件代码,用以实现连续播放:
         Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
               Timer1.Stop()                ‘停止记时
      Dim n As Integer
               If random_mode = False Then ‘使用random_mode变量标志是否随机
                   n = n + 1                ‘顺序播放
                   n = n Mod ListBox1.Items.Count     ‘保证n处于列表范围内
                   AxWindowsMediaPlayer1.URL = ListBox1.Items(n).ToString
               Else                  ‘random_mode=true,则为随机播放
                   Randomize()       ‘初始化随机数
                   Dim x As Integer
                   x = Int(1 + 999 * Rnd()) Mod ListBox1.Items.Count
      ‘产生1000以内的随机数X并且保证X不超出列表范围
                   AxWindowsMediaPlayer1.URL = ListBox1.Items(x).ToString
               End If
      End Sub
      双击播放任意列表项:
      Private Sub ListBox1_DoubleClick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles ListBox1.DoubleClick
               AxWindowsMediaPlayer1.URL = ListBox1.SelectedItem.ToString
           End Sub
      


      3楼2011-01-05 12:51
      回复