问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

vb中添加了flash做了个界面。有没有暂停播放这种功能,不要一直循环播放。??

发布网友 发布时间:2022-04-21 02:01

我来回答

2个回答

热心网友 时间:2022-04-21 03:30

'给你一个详细的代码:
'打开VB,新建一个标准的EXE工程,将工程名称命名为"MyFlashPlayer",在控件箱中添加CommonDialog、StatusBar、Slider、ShockwaveFlash控件。
'将默认生成的窗口Name属性改为"frmMyFlashPlayer",Caption改为"My FlashPlayer",ScaleMode改为"3 - Pixel",然后依次添加以下控件:

'1、12个按钮(CommandButton),Name属性分别为"cmdPlaySWF"、"cmdPauseSWF"、"cmdStopSWF"、
'"cmdRewindSWF"、"cmdStepBackSWF"、"cmdStepForwardSWF"、"cmdGotoEndSWF"、
'"cmdFastBackSWF"、"cmdFastForwardSWF"、"cmdZoomInSWF"、"cmdZoomOutSWF"、
'"cmdZoomNoSWF",Caption属性分别为“播放”、“暂停”、“停止”、“重播”、“后退”、
'“前进”、“末帧”、“快退”、“快进”、“放大”、“缩小”、“正常”。

'2、1个划动条(Slider),Name属性为SliderSWF,Max属性为"100"(表示100%),TickStyle属性为"3 - sldNoTicks"。
'1个状态栏(StatusBar),双击其属性中的“(自定义)”,在弹出的属性页的窗格栏中,插入2个窗格,并将2个窗格的对齐方式设置为"1 - sbrCenter"。

'3、1个定时器(Timer),Name属性为TimerSWF,Enabled属性为"False",Interval属性为"1000"。
'1个通用对话框(CommonDialog),Name属性为"OpenDialogSWF",DialogTitle属性为“打开Flash动画文件”,
'Filter属性为“Flash动画文件(*.swf)|*.swf|所有文件(*.*)|*.*”,FilterIndex属性为"1"。

'4、1个ShockwaveFlash控件,Name属性为MyShockwaveFlash,点击鼠标右键弹出快捷菜单,选择“置前”,
'使其在所有控件的最上面,全屏幕播放需要此设置,在后面源代码中笔者将说明其用途。

'5、打开菜单编辑器,添加如下菜单:“文件(&F)”(mnuFileSWF)、“打开(&O)”(Ctrl+O)(mnuOpenSWF)、
'“退出(&X)”(mnuExitSWF)、“查看(&V)”(mnuViewSWF)、“质量(&Q)”(mnuQualitySWF)、“高(&H)”
'(复选)(mnuQualityHigh)、“中(&M)”(mnuQualityMedium)、“低(&L)”(mnuQualityLow)、“循环播放(&L)”
'(复选)(mnuLoopSWF)、“快捷菜单(&M)”(复选)(mnuMenuSWF)、“全屏幕播放(&F)”(F11)(mnuFullScreenSWF)。
'其中“文件”包括“打开”、“退出”,“查看”包括“质量”、“循环播放”、“快捷菜单”、“全屏幕播放”,“质量”又包括“高”、“中”、“低”。


Option Explicit

Private Declare Function SetWindowLong Lib "user32" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Const GWL_STYLE = (-16)
' 窗口风格参数值
Private Const WS_CAPTION = &HC00000
Private Const WS_THICKFRAME = &H40000

Private Sub cmdFastBackSWF_Click()
' 向后5%
If MyShockwaveFlash.FrameNum >= 0 Then
MyShockwaveFlash.GotoFrame (SliderSWF.Value - SliderSWF.LargeChange) * 0.01 * (MyShockwaveFlash.TotalFrames - 1)
End If
End Sub

Private Sub cmdFastForwardSWF_Click()
' 向前5%
If MyShockwaveFlash.FrameNum >= 0 Then
MyShockwaveFlash.GotoFrame (SliderSWF.Value + SliderSWF.LargeChange) * 0.01 * (MyShockwaveFlash.TotalFrames - 1)
End If
End Sub

Private Sub cmdGotoEndSWF_Click()
' 到最后一帧
If MyShockwaveFlash.FrameNum >= 0 Then
MyShockwaveFlash.GotoFrame (MyShockwaveFlash.TotalFrames - 1)
End If
End Sub

Private Sub cmdPauseSWF_Click()
' 暂停播放
' ShockwaveFlash控件中没有多媒体播放器中典型的名为“Pause”的功能
' 只有两个看不出区别的功能:StopPlay和Stop,都是用来暂停播放的

MyShockwaveFlash.StopPlay
End Sub

Private Sub cmdPlaySWF_Click()
' 播放
MyShockwaveFlash.Play
End Sub

Private Sub cmdRewindSWF_Click()
' 返回到第一帧,自动开始播放
MyShockwaveFlash.Rewind
MyShockwaveFlash.Play
End Sub

Private Sub cmdStepBackSWF_Click()
' 后退一帧
MyShockwaveFlash.Back
End Sub

Private Sub cmdStepForwardSWF_Click()
' 前进一帧
MyShockwaveFlash.Forward
End Sub
Private Sub cmdStopSWF_Click()
' 停止
' 一般多媒体播放器停止的行为是停止播放并返回到第一帧
' 但ShockwaveFlash控件中没有这样的功能
' 所以只能以“返回到第一帧”和“暂停播放”两个功能组合实现

MyShockwaveFlash.Rewind
MyShockwaveFlash.StopPlay
End Sub

Private Sub cmdZoomInSWF_Click()
' 放大一倍,以原先为50%
MyShockwaveFlash.Zoom (50)
End Sub

Private Sub cmdZoomNoSWF_Click()
' 正常大小
MyShockwaveFlash.Zoom (0)
End Sub

Private Sub cmdZoomOutSWF_Click()
' 缩小一倍,以原先为200%
MyShockwaveFlash.Zoom (200)
End Sub

Private Sub Form_Load()
' 设置打开文件对话框的标志为:
' 文件名和路径都必须有效,并且不显示“以只读方式打开(R)”的复选项
OpenDialogSWF.Flags = cdlOFNFileMustExist Or cdlOFNPathMustExist Or cdlOFNHideReadOnly
End Sub

Private Sub Form_Resize()
If Me.WindowState <> vbMinimized Then
' 当窗口不是最小化时,根据窗口大小调整各控件的位置和大小
' 否则计算高度和宽度时会出现非正数而出错
If Me.ScaleHeight > (cmdPlaySWF.Height + StatusBarSWF.Height + SliderSWF.Height) Then
MyShockwaveFlash.Move 0, cmdPlaySWF.Height + 8, Me.ScaleWidth, Me.ScaleHeight - cmdPlaySWF.Height - StatusBarSWF.Height - SliderSWF.Height - 16
End If

SliderSWF.Top = Me.ScaleHeight - StatusBarSWF.Height - SliderSWF.Height
SliderSWF.Width = Me.ScaleWidth

StatusBarSWF.Panels(1).MinWidth = Me.ScaleWidth * 0.6
StatusBarSWF.Panels(2).MinWidth = Me.ScaleWidth * 0.2
StatusBarSWF.Panels(3).MinWidth = Me.ScaleWidth * 0.2
End If
End Sub

Private Sub mnuClose_Click()
TimerSWF.Enabled = False
MyShockwaveFlash.Movie = "http://"  ' 只有此参数才能关闭当前动画,如果传入vbNullString会出错
StatusBarSWF.Panels(1).Text = vbNullString
StatusBarSWF.Panels(1).ToolTipText = vbNullString
StatusBarSWF.Panels(2).Text = vbNullString
StatusBarSWF.Panels(3).Text = vbNullString
SliderSWF.Value = 0
End Sub

Private Sub mnuExitSWF_Click()
Unload Me
End Sub
Private Sub mnuFullScreenSWF_Click()
' 全屏幕播放,隐藏播放控制和进度显示
Dim ReturnValue As Long, WindowStyle As Long
mnuFullScreenSWF.Checked = Not mnuFullScreenSWF.Checked
If mnuFullScreenSWF.Checked Then
' 更改窗口风格为无边框和无标题条,并且充满屏幕
WindowStyle = GetWindowLong(Me.hwnd, GWL_STYLE)
ReturnValue = SetWindowLong(Me.hwnd, GWL_STYLE, WindowStyle - WS_CAPTION - WS_THICKFRAME)

Me.WindowState = vbNormal
Me.Move 0, 0, Screen.Width, Screen.Height

' 因为ShockwaveFlash在所有控件的最上面
' 所以无须隐藏其他控件就可充满窗口
MyShockwaveFlash.Move 0, 0, Me.ScaleWidth, Me.ScaleHeight
Else
' 恢复窗口风格为正常式样,并且还原为默认大小
WindowStyle = GetWindowLong(Me.hwnd, GWL_STYLE)
ReturnValue = SetWindowLong(Me.hwnd, GWL_STYLE, WindowStyle Or WS_CAPTION Or WS_THICKFRAME)

Me.Move 0, 0, 488 * Screen.TwipsPerPixelX, 446 * Screen.TwipsPerPixelY
Me.Move (Screen.Width - Me.Width) \ 2, (Screen.Height - Me.Height) \ 2
End If
End Sub

Private Sub mnuLoopSWF_Click()
' 设置ShockwaveFlash是否循环播放
mnuLoopSWF.Checked = Not mnuLoopSWF.Checked
MyShockwaveFlash.Loop = mnuLoopSWF.Checked
End Sub

Private Sub mnuMenuSWF_Click()
' 设置ShockwaveFlash快捷菜单是否可用
mnuMenuSWF.Checked = Not mnuMenuSWF.Checked
MyShockwaveFlash.Menu = mnuMenuSWF.Checked
End Sub

Private Sub mnuOpenSWF_Click()
' 打开Flash动画文件
On Error GoTo ErrorOpenSWF

OpenDialogSWF.ShowOpen
If OpenDialogSWF.FileName <> vbNullString Then
StatusBarSWF.Panels(1).Text = OpenDialogSWF.FileName
StatusBarSWF.Panels(1).ToolTipText = OpenDialogSWF.FileName
MyShockwaveFlash.Movie = OpenDialogSWF.FileName
TimerSWF.Enabled = True ' 开始显示播放进度
StatusBarSWF.Panels(2).Text = Format$(MyShockwaveFlash.TotalFrames, "共#帧")
End If
Exit Sub
ErrorOpenSWF:
' 打开Flash动画文件中有个Bug:
' 如果打开了一个非Flash动画格式或是损坏的Flash动画,ShockwaveFlash控件将产生异常错误
' 但之后就无法再打开任何完好的Flash动画了,即无法给Movie属性赋予任何有效值了,只有关闭程序再重新运行
' 我猜测可能是ShockwaveFlash控件的问题

MsgBox "不是有效的Flash动画,或Flash动画已损坏,程序将被关闭!", vbCritical
Unload Me
End Sub

Private Sub mnuQualityHigh_Click()
' 高质量
MyShockwaveFlash.Quality2 = "High" '等同于:MyShockwaveFlash.Quality = 1
mnuQualityHigh.Checked = True
mnuQualityMedium.Checked = False
mnuQualityLow.Checked = False
End Sub

Private Sub mnuQualityLow_Click()
' 低质量
MyShockwaveFlash.Quality2 = "Low" '等同于:MyShockwaveFlash.Quality = 0
mnuQualityHigh.Checked = False
mnuQualityMedium.Checked = False
mnuQualityLow.Checked = True
End Sub

Private Sub mnuQualityMedium_Click()
' 中质量
MyShockwaveFlash.Quality2 = "Medium" '无对应数字值,只能用字符串赋值
mnuQualityHigh.Checked = False
mnuQualityMedium.Checked = True
mnuQualityLow.Checked = False
End Sub

Private Sub mnuWebOpen_Click()
Dim SWFURL As String
SWFURL = InputBox("输入动画链接地址")
If SWFURL <> vbNullString Then
MyShockwaveFlash.Movie = SWFURL
End If
End Sub

Private Sub SliderSWF_Scroll()
If MyShockwaveFlash.FrameNum >= 0 Then
' 根据划动条的值为百分比跳转到动画播放进度
MyShockwaveFlash.GotoFrame (SliderSWF.Value * 0.01 * (MyShockwaveFlash.TotalFrames - 1))
Else
SliderSWF.Value = 0
End If
End Sub

Private Sub TimerSWF_Timer()
' ShockwaveFlash控件没有播放进度的事件
' 因此使用定时器显示当前动画的播放信息
SliderSWF.Value = MyShockwaveFlash.FrameNum / (MyShockwaveFlash.TotalFrames - 1) * 100
SliderSWF.ToolTipText = CStr(SliderSWF.Value) + "%"
StatusBarSWF.Panels(3).Text = Format$(MyShockwaveFlash.FrameNum + 1, "第0帧")
End Sub

热心网友 时间:2022-04-21 04:48

flash控件有两个方法:Stop和StopPlay,你试一下
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
五月天的历年专辑价钱及曲目 五月天的所有专辑? 五月天一共有多少专辑啊? 请问男女之间的爱情有性才能维持吗? 迈克尔 杰克逊的最好听的十首歌 给个下载地址 分公司是否可以和员工签订劳动合同 分公司能否与员工签立劳动合同? 分公司可以与员工签订劳动合同的吗 分公司可否签订劳动合同 分公司能否签劳动合同 医保折子不是本人怎么取钱 怎么提前还贷划算 容声BCD-241B/HC冰箱冷藏室结冰该怎办 HUAWEI p20和mate10pro求推荐给学生 支付宝加好友后钱莫名其妙的没了 在线求一个网页里面swf播放器代码,有控制播放暂停按钮等。. 在线等待.... 谢谢 请教一下,什么是呼叫中心?是400电话吗? 拍拍网限购一件违规么 游戏平台的未来 没有了Steam我们还怎么买游戏 开机时出现SATA device not found??? jeep汽车轮胎出厂日期怎么看 成人提高学历的毕业证,可以用来考公务员,教师资格证,律师资格证吗 &lt;经济信息联播&gt;的首播重播时间是几点啊??(急) CCTV2《经济信息联播》采访蒙牛总裁孙伊萍了吗?都说了些什么呢? 最新一期《经济信息联播》中,提到了哪些企业代表? 经济信息联播的节目宗旨 vivo怎么取消维修预 vivo预约维修什么意思 vivo手机怎么预约维修呢? 微信是我的,银行卡是别人的他把我微信冻结了,我怎么解冻? 合肥订婚有怎样的习俗?订婚我需要什么? 请问:根据合肥的风俗习惯,两个人结婚前,男方要为女方家做些什么 合肥是怎么订婚的 合肥地区 婚嫁订亲下日子怎样写条款 合肥吴山那的习俗有知道的吗?男女之间的,比如订婚啊 到对方家见家长要怎么怎么要, 合肥地区结婚时需要哪些彩礼,并且哪些东西都代表了什么含义?要详细点! 双方父母第一次见面需要准备什么?合肥有什么规矩吗? 谁知道合肥舒城县杭埠的订婚礼节? 合肥长丰县下塘女方到男方父母家订婚,男方父母要怎么做 合肥地区,女方第一次去男方家,男方要包多少红包 安徽地区提亲和订婚事宜 炒蛋怎么做才好吃呢? 怎样找同城当天可到网店? 微信好友被删了,自己又不知道他的了。怎么找回? 为什么在网页上有播放器的flash下载后却没有了播放器,高手进! 红酒要放冰箱冰才好喝吗? 红酒放在冰箱冷藏几天会不会怎样? 红酒开了后可以放冰箱吗 红酒能不能放冰箱里是为什么 红酒存放到冰箱里合适吗?红酒不会坏吧。