ppt中插入的swf文件如何从指定处开始播放

2024-11-19 00:08:26
推荐回答(2个)
回答1:

可以用VBA代码来限制开始播放的帧数,怎么编写VBA代码下面有一段在网上引用的教程:
1、窗体、界面设计。
新建工程,选择“工程”菜单下的“部件”命令,在“部件”窗口的“控件”列表中将“Shockwaveflash”、“MicrosoftCommonDialogControl6.0(SP3)”、“MicrosoftWindowsCommonControl6.0(SP3)”前的复选框选中,然后确定。再在窗体中分别加入1个CommonDialog控件、1个Slider控件、3个Label控件、6个CommandButton控件和1个StatusBar控件。其中:
将Form1的“Caption”属性设置为:Flash动画播放器。这是控制窗口。
将CommonDialog1的CancelError设置为True,DialogTitle设置为“打开Flash动画文件”,Filter属性设置为“Flash动画(*.swf)|*.swf|”,FilterIndex设置为1,MaxFileSize设置为10240。
将Slider1的SelectRanger的属性设置为“True”,SmallChange属性和LargeChange属性设置为10,TickFrequengcy属性设置为20,TextPosition设置为“1-SldBelowRight”。
将Label(1-3)分别放在Slider1下的左端、中间和右端。其中,Label1的Caption设置为“0帧”,Label2和Label3的Caption设置为空字符串。
6个CommandButton的“名称”属性分别为:cmdOpen、cmdPlay、cmdPause、cmdPre、cmdPreFrame、cmdNextFrame、cmdNext、cmdExit,“Caption”属性分别为:打开、播放、暂停、上一个、上一帧、下一帧、下一个、退出。
在StatusBar上单击鼠标右键,选择“属性”,从弹出的窗口中选择“窗格”页面,用鼠标点击“插入窗格”5次,在索引1-5中分别设置“文本”属性为:“共打开了0个文件”、“状态:”、“等待”、“帧数:”、“0”,再适当设置每一项的“最小宽度”的属性(可参考图1中的比例)。
进入菜单编辑器(按快捷键Ctrl+E)。设置第一个菜单标题为“显示控制”,名称为:mnuDisplay;在“显示控制”下设立子菜单标题分别为“全部显示”、“随窗口大小变化”、“缩放至窗口大小”,名称分别为:mnuDisplay0、mnuDisplay1、mnuDisplay2。设置第二个菜单标题为“质量控制”,名称为:mnuQuality;在“质量控制”下设立子菜单标题分别为“低分辨率”、“高分辨率”,名称分别为:mnuQuality0、mnuQuality1。设置第三个菜单标题为“播放控制”,名称为:mnuPlayControl;在“播放控制”下设立子菜单标题分别为“循环播放”、“放大画面”、“缩小画面”,名称分别为:mnuLoopPlay、mnuZoomIn、mnuZoomOut。
选择“工程”菜单下的“添加窗体”命令,新增一个窗体Form2作为播放窗口。在Form2上加入1个ShockwaveFlash控件和1个Timer控件。将Timer1控件的“Interval”属性设置为“20”。
最后,对各窗体、控件的大小、位置进行适当的调整,其大小、位置可参考图1。
2、程序代码
第一步:在Form1的代码窗口中添加以下代码:
DimFileNames()AsString注释:用于保存打开的文件名称。
DimPlayFileNumAsInteger注释:用于计算正在播放的文件序号。
DimTotalFileAsInteger注释:用于统计打开的文件总数。
PrivateSubcmdOpen_Click()注释:打开
OnErrorGoToExitOpen
CommonDialog1.Flags=cdlOFNAllowMultiselectOrcdlOFNFileMustExistOrcdlOFNExplorer
CommonDialog1.FileName=〃"
CommonDialog1.ShowOpen注释:显示“打开”对话框。
注释:以vbNullChar作为子字符串的边界分隔字符串CommonDialog1返回的FileName。
FileNames()=Split(CommonDialog1.FileName,vbNullChar)
IfUBound(FileNames)=0Then注释:用户只打开了一个文件。
Form2!ShockwaveFlash1.Movie=FileNames(0)
TotalFile=1
PlayFileNum=0
Else注释:用户打开了多于一个文件。
Form2!ShockwaveFlash1.Movie=FileNames(0)+〃\〃+FileNames(1)
TotalFile=UBound(FileNames)
PlayFileNum=1
EndIf
StatusBar1.Panels(1).Text=〃共打开了〃+Trim(Str(TotalFile))+〃个文件〃
cmdPlay_Click
ExitOpen:
EndSub
PrivateSubcmdPlay_Click()注释:开始播放
IfTotalFile<1ThenExitSub注释:用户还没有打开文件。
注释:显示Form2开始播放动画。
Form2.Caption=FileNames(PlayFileNum)+〃-Flash动画播放器〃
Form2.Show
Form2!ShockwaveFlash1.Playing=True
IfTotalFile=1ThenPlayFileNum=0
注释:显示状态条的信息。
StatusBar1.Panels(3).Text=〃正在播放文件:〃+FileNames(PlayFileNum)+〃...〃
注释:显示滑动条的状态。
Slider1.Max=Form2!ShockwaveFlash1.TotalFrames
Label2.Caption=Str(Slider1.Max/2)+〃帧〃
Label3.Caption=Str(Slider1.Max)+〃帧〃
EndSub
PrivateSubcmdPause_Click()注释:暂停播放
Form2!ShockwaveFlash1.Stop
EndSub
PrivateSubcmdPre_Click()注释:播放上一个文件
IfTotalFile<>1Then注释:当用户打开多于一个文件时
PlayFileNum=PlayFileNum-1
IfPlayFileNum<1ThenPlayFileNum=TotalFile
Form2!ShockwaveFlash1.Movie=FileNames(0)+〃\〃+FileNames(PlayFileNum)
EndIf
注释:显示播放状态的信息。
StatusBar1.Panels(3).Text=〃正在播放文件:〃+FileNames(PlayFileNum)+〃...〃
Slider1.Max=Form2!ShockwaveFlash1.TotalFrames
Form2.Caption=FileNames(PlayFileNum)+〃-Flash动画播放器〃
Label2.Caption=Str(Slider1.Max/2)+〃帧〃
Label3.Caption=Str(Slider1.Max)+〃帧〃
EndSub
PrivateSubcmdNext_Click()注释:播放下一个文件
IfTotalFile<>1Then注释:用户打开多于一个文件时
PlayFileNum=PlayFileNum+1
IfPlayFileNum>TotalFileThenPlayFileNum=1
Form2!ShockwaveFlash1.Movie=FileNames(0)+〃\〃+FileNames(PlayFileNum)
EndIf
注释:显示播放状态的信息。
StatusBar1.Panels(3).Text=〃正在播放文件:〃+FileNames(PlayFileNum)+〃...〃
Slider1.Max=Form2!ShockwaveFlash1.TotalFrames
Form2.Caption=FileNames(PlayFileNum)+〃-Flash动画播放器〃
Label2.Caption=Str(Slider1.Max/2)+〃帧〃
Label3.Caption=Str(Slider1.Max)+〃帧〃
EndSub
PrivateSubcmdPreFrame_Click()注释:跳到动画的上一帧
Form2!ShockwaveFlash1.Back
EndSub
PrivateSubcmdNextFrame_Click()注释:跳到动画的下一帧
Form2!ShockwaveFlash1.Forward
EndSub
PrivateSubcmdExit_Click()注释:退出程序
End
EndSub
PrivateSubSlider1_Scroll()
注释:当用户拖动滑动条时,将播放帧数设置为滑动条中的值。
Form2!ShockwaveFlash1.FrameNum=Slider1.Value
EndSub
PrivateSubmnuDisplay0_Click()
注释:将画面大小设置为在控件内保持动画原来比例全部显示
Form2!ShockwaveFlash1.ScaleMode=0
mnuDisplay0.Checked=True
mnuDisplay1.Checked=False
mnuDisplay2.Checked=False
EndSub
PrivateSubmnuDisplay1_Click()
注释:将画面的缩放设置为随控件横向(或纵向)的缩放而变化
Form2!ShockwaveFlash1.ScaleMode=1
mnuDisplay0.Checked=False
mnuDisplay1.Checked=True
mnuDisplay2.Checked=False
EndSub
PrivateSubmnuDisplay2_Click()
注释:将画面大小设置为不理会动画原来比例缩放至控件大小
Form2!ShockwaveFlash1.ScaleMode=2
mnuDisplay0.Checked=False
mnuDisplay1.Checked=False
mnuDisplay2.Checked=True
EndSub
PrivateSubmnuLoopPlay_Click()
注释:将播放方式设置为循环或不循环。
mnuLoopPlay.Checked=NotmnuLoopPlay.Checked
Form2!ShockwaveFlash1.Loop=NotForm2!ShockwaveFlash1.Loop
EndSub
PrivateSubmnuQuality0_Click()
注释:将画面质量设置为低分辨率
Form2!ShockwaveFlash1.Quality=0
mnuQuality0.Checked=True
mnuQuality1.Checked=False
EndSub
PrivateSubmnuQuality1_Click()
注释:将画面质量设置为高分辨率
Form2!ShockwaveFlash1.Quality=1
mnuQuality0.Checked=False
mnuQuality1.Checked=True
EndSub
PrivateSubmnuZoomIn_Click()
注释:放大画面。
Form2!ShockwaveFlash1.Zoom(50)
EndSub
PrivateSubmnuZoomOut_Click()
注释:缩小画面。
Form2!ShockwaveFlash1.Zoom(200)
EndSub
PrivateSubForm_Unload(CancelAsInteger)
End注释:结束程序
EndSub
第二步:在Form2的代码窗口中添加以下代码:
PrivateSubForm_Resize()
注释:将ShockwaveFlash1控件的大小设置为Form2的大小。
ShockwaveFlash1.Top=Form2.ScaleTop
ShockwaveFlash1.Left=Form2.ScaleLeft
ShockwaveFlash1.Width=Form2.ScaleWidth
ShockwaveFlash1.Height=Form2.ScaleHeight
EndSub
PrivateSubTimer1_Timer()
注释:在状态栏和滑动条上显示当前播放的帧。
Form1!StatusBar1.Panels(5).Text=Str(ShockwaveFlash1.FrameNum)
Form1!Slider1.Value=ShockwaveFlash1.FrameNum
EndSub
第三步:调试、运行程序,运行界面如图2所示。
当播放Flash动画时,在播放窗口中单击鼠标右键时,将会弹出如图3所示的菜单。在该菜单,我们可以完成控制Flash动画播放的大部份工作。若想取消该功能,只要将Shockwaveflash控件的Menu属性设置为False即可。
资料引用:http://www.knowsky.com/337260.html

回答2:

可以用vba代码来限制开始播放的帧数,怎么编写vba代码下面是方法步骤:
1、窗体、界面设计。
新建工程,选择“工程”菜单下的“部件”命令,在“部件”窗口的“控件”列表中将“shockwaveflash”、“microsoftcommondialogcontrol6.0(sp3)”、“microsoftwindowscommoncontrol6.0(sp3)”前的复选框选中,然后确定。再在窗体中分别加入1个commondialog控件、1个slider控件、3个label控件、6个commandbutton控件和1个statusbar控件。其中:
将form1的“caption”属性设置为:flash动画播放器。这是控制窗口。
将commondialog1的cancelerror设置为true,dialogtitle设置为“打开flash动画文件”,filter属性设置为“flash动画(*.swf)|*.swf|”,filterindex设置为1,maxfilesize设置为10240。
将slider1的selectranger的属性设置为“true”,smallchange属性和largechange属性设置为10,tickfrequengcy属性设置为20,textposition设置为“1-sldbelowright”。
将label(1-3)分别放在slider1下的左端、中间和右端。其中,label1的caption设置为“0帧”,label2和label3的caption设置为空字符串。
6个commandbutton的“名称”属性分别为:cmdopen、cmdplay、cmdpause、cmdpre、cmdpreframe、cmdnextframe、cmdnext、cmdexit,“caption”属性分别为:打开、播放、暂停、上一个、上一帧、下一帧、下一个、退出。
在statusbar上单击鼠标右键,选择“属性”,从弹出的窗口中选择“窗格”页面,用鼠标点击“插入窗格”5次,在索引1-5中分别设置“文本”属性为:“共打开了0个文件”、“状态:”、“等待”、“帧数:”、“0”,再适当设置每一项的“最小宽度”的属性(可参考图1中的比例)。
进入菜单编辑器(按快捷键ctrl+e)。设置第一个菜单标题为“显示控制”,名称为:mnudisplay;在“显示控制”下设立子菜单标题分别为“全部显示”、“随窗口大小变化”、“缩放至窗口大小”,名称分别为:mnudisplay0、mnudisplay1、mnudisplay2。设置第二个菜单标题为“质量控制”,名称为:mnuquality;在“质量控制”下设立子菜单标题分别为“低分辨率”、“高分辨率”,名称分别为:mnuquality0、mnuquality1。设置第三个菜单标题为“播放控制”,名称为:mnuplaycontrol;在“播放控制”下设立子菜单标题分别为“循环播放”、“放大画面”、“缩小画面”,名称分别为:mnuloopplay、mnuzoomin、mnuzoomout。
选择“工程”菜单下的“添加窗体”命令,新增一个窗体form2作为播放窗口。在form2上加入1个shockwaveflash控件和1个timer控件。将timer1控件的“interval”属性设置为“20”。
最后,对各窗体、控件的大小、位置进行适当的调整,其大小、位置可参考图1。
2、程序代码
第一步:在form1的代码窗口中添加以下代码:
dimfilenames()asstring注释:用于保存打开的文件名称。
dimplayfilenumasinteger注释:用于计算正在播放的文件序号。
dimtotalfileasinteger注释:用于统计打开的文件总数。
privatesubcmdopen_click()注释:打开
onerrorgotoexitopen
commondialog1.flags=cdlofnallowmultiselectorcdlofnfilemustexistorcdlofnexplorer
commondialog1.filename=〃"
commondialog1.showopen注释:显示“打开”对话框。
注释:以vbnullchar作为子字符串的边界分隔字符串commondialog1返回的filename。
filenames()=split(commondialog1.filename,vbnullchar)
ifubound(filenames)=0then注释:用户只打开了一个文件。
form2!shockwaveflash1.movie=filenames(0)
totalfile=1
playfilenum=0
else注释:用户打开了多于一个文件。
form2!shockwaveflash1.movie=filenames(0)+〃\〃+filenames(1)
totalfile=ubound(filenames)
playfilenum=1
endif
statusbar1.panels(1).text=〃共打开了〃+trim(str(totalfile))+〃个文件〃
cmdplay_click
exitopen:
endsub
privatesubcmdplay_click()注释:开始播放
iftotalfile<1thenexitsub注释:用户还没有打开文件。
注释:显示form2开始播放动画。
form2.caption=filenames(playfilenum)+〃-flash动画播放器〃
form2.show
form2!shockwaveflash1.playing=true
iftotalfile=1thenplayfilenum=0
注释:显示状态条的信息。
statusbar1.panels(3).text=〃正在播放文件:〃+filenames(playfilenum)+〃...〃
注释:显示滑动条的状态。
slider1.max=form2!shockwaveflash1.totalframes
label2.caption=str(slider1.max/2)+〃帧〃
label3.caption=str(slider1.max)+〃帧〃
endsub
privatesubcmdpause_click()注释:暂停播放
form2!shockwaveflash1.stop
endsub
privatesubcmdpre_click()注释:播放上一个文件
iftotalfile<>1then注释:当用户打开多于一个文件时
playfilenum=playfilenum-1
ifplayfilenum<1thenplayfilenum=totalfile
form2!shockwaveflash1.movie=filenames(0)+〃\〃+filenames(playfilenum)
endif
注释:显示播放状态的信息。
statusbar1.panels(3).text=〃正在播放文件:〃+filenames(playfilenum)+〃...〃
slider1.max=form2!shockwaveflash1.totalframes
form2.caption=filenames(playfilenum)+〃-flash动画播放器〃
label2.caption=str(slider1.max/2)+〃帧〃
label3.caption=str(slider1.max)+〃帧〃
endsub
privatesubcmdnext_click()注释:播放下一个文件
iftotalfile<>1then注释:用户打开多于一个文件时
playfilenum=playfilenum+1
ifplayfilenum>totalfilethenplayfilenum=1
form2!shockwaveflash1.movie=filenames(0)+〃\〃+filenames(playfilenum)
endif
注释:显示播放状态的信息。
statusbar1.panels(3).text=〃正在播放文件:〃+filenames(playfilenum)+〃...〃
slider1.max=form2!shockwaveflash1.totalframes
form2.caption=filenames(playfilenum)+〃-flash动画播放器〃
label2.caption=str(slider1.max/2)+〃帧〃
label3.caption=str(slider1.max)+〃帧〃
endsub
privatesubcmdpreframe_click()注释:跳到动画的上一帧
form2!shockwaveflash1.back
endsub
privatesubcmdnextframe_click()注释:跳到动画的下一帧
form2!shockwaveflash1.forward
endsub
privatesubcmdexit_click()注释:退出程序
end
endsub
privatesubslider1_scroll()
注释:当用户拖动滑动条时,将播放帧数设置为滑动条中的值。
form2!shockwaveflash1.framenum=slider1.value
endsub
privatesubmnudisplay0_click()
注释:将画面大小设置为在控件内保持动画原来比例全部显示
form2!shockwaveflash1.scalemode=0
mnudisplay0.checked=true
mnudisplay1.checked=false
mnudisplay2.checked=false
endsub
privatesubmnudisplay1_click()
注释:将画面的缩放设置为随控件横向(或纵向)的缩放而变化
form2!shockwaveflash1.scalemode=1
mnudisplay0.checked=false
mnudisplay1.checked=true
mnudisplay2.checked=false
endsub
privatesubmnudisplay2_click()
注释:将画面大小设置为不理会动画原来比例缩放至控件大小
form2!shockwaveflash1.scalemode=2
mnudisplay0.checked=false
mnudisplay1.checked=false
mnudisplay2.checked=true
endsub
privatesubmnuloopplay_click()
注释:将播放方式设置为循环或不循环。
mnuloopplay.checked=notmnuloopplay.checked
form2!shockwaveflash1.loop=notform2!shockwaveflash1.loop
endsub
privatesubmnuquality0_click()
注释:将画面质量设置为低分辨率
form2!shockwaveflash1.quality=0
mnuquality0.checked=true
mnuquality1.checked=false
endsub
privatesubmnuquality1_click()
注释:将画面质量设置为高分辨率
form2!shockwaveflash1.quality=1
mnuquality0.checked=false
mnuquality1.checked=true
endsub
privatesubmnuzoomin_click()
注释:放大画面。
form2!shockwaveflash1.zoom(50)
endsub
privatesubmnuzoomout_click()
注释:缩小画面。
form2!shockwaveflash1.zoom(200)
endsub
privatesubform_unload(cancelasinteger)
end注释:结束程序
endsub
第二步:在form2的代码窗口中添加以下代码:
privatesubform_resize()
注释:将shockwaveflash1控件的大小设置为form2的大小。
shockwaveflash1.top=form2.scaletop
shockwaveflash1.left=form2.scaleleft
shockwaveflash1.width=form2.scalewidth
shockwaveflash1.height=form2.scaleheight
endsub
privatesubtimer1_timer()
注释:在状态栏和滑动条上显示当前播放的帧。
form1!statusbar1.panels(5).text=str(shockwaveflash1.framenum)
form1!slider1.value=shockwaveflash1.framenum
endsub
第三步:调试、运行程序运行。
当播放flash动画时,在播放窗口中单击鼠标右键时,将会弹出菜单。在该菜单,我们可以完成控制flash动画播放的大部份工作。若想取消该功能,只要将shockwaveflash控件的menu属性设置为false即可。