首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用PowerPoint管理基于它们的书签和触发效果?

如何使用PowerPoint管理基于它们的书签和触发效果?
EN

Stack Overflow用户
提问于 2021-02-25 09:24:04
回答 1查看 293关注 0票数 2

我想添加音频的书签,并将它们与定时对象的VBA属性相关联。

要添加书签,此函数执行以下工作:

代码语言:javascript
运行
复制
Function AddBookMark(ByRef MediaObject As Shape, ByVal PositionInMs As Long, ByVal BookMarkName As String) As MediaBookmark
 Dim Result As MediaBookmark
  With MediaObject
       Set Result = .MediaFormat.MediaBookmarks.Add(Position:=PositionInMs, name:=BookMarkName)
  End With
  Set AddBookMark = Result
End Function

下面的代码

  1. 添加媒体对象。
  2. 将2 bookMarks添加到该媒体对象
  3. 添加矩形形状
  4. 创建和效果以及AnimationBehaviour

动画作品,但我想启动基于创建书签的运动效果。这两个注释行不起作用。SomeOne明白为什么吗?

代码语言:javascript
运行
复制
Sub SetBookMarkAsTriggerTest()
  FileName = "C:\path\to\your.mp3"
  Dim Slide          As Slide
  Dim MediaObject    As Shape
  Dim AnimatedShape  As Shape
  Dim FirstBookMark  As MediaBookmark
  Dim SecondBookMark As MediaBookmark
  Dim FirstEffect    As Effect
  Dim SecondEffect   As Effect
  Dim Behaviour As AnimationBehavior
  
  Set Slide = ActivePresentation.Slides(1)
  Set MediaObject = Slide.shapes.AddMediaObject2(FileName, msoTrue,_ 
   msoTrue, 50, 50)
  MediaObject.name = "MediaOBject1"
  Set FirstBookMark = AddBookMark(MediaObject, 5000, "bm1")
  Set SecondBookMark = AddBookMark(MediaObject, 7000, "bm2")  
  Set AnimatedShape = Slide.shapes.addShape(msoShapeRectangle, _ 
   0, 0, 100, 50)
  
  Set FirstEffect = Slide.TimeLine.MainSequence.AddEffect(Shape:=AnimatedShape, _
     EffectId:=msoAnimEffectFade, Trigger:=msoAnimTriggerAfterPrevious)
  FirstEffect.Timing.Duration = 10    
  
  Set Behaviour = FirstEffect.Behaviors.Add(msoAnimTypeMotion)
  With Behaviour
      With .motionEffect
          .FromX = 0
          .FromX = 0
          .ToX = 50
          .ToY = 50
      End With
      With .Timing
          .Duration = 2
          'this line does not work...why ?
          '.TriggerType = msoAnimTriggerOnMediaBookmark
           'this line does not work neither...why ?
          '.TriggerBookmark = "bm1"
      End With
  End With
End Sub

非常感谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-12 14:31:11

通过使用InteractiveSequences,我成功地做到了我想做的事情。然后,我们可以使用基于书签的AddTriggerEffect方法添加触发器效果,如下所示:

代码语言:javascript
运行
复制
Function AddBookMark(ByRef MediaObject As Shape, ByVal PositionInMs As Long, ByVal BookMarkName As String) As MediaBookmark
 Dim result As MediaBookmark
  With MediaObject
       Set result = .MediaFormat.MediaBookmarks.Add(Position:=PositionInMs, Name:=BookMarkName)
  End With
  Set AddBookMark = result
End Function

Sub SetBookMarkAsTriggerTest()
  fileName = "C:\path\to\your.mp3"
  Dim Slide          As Slide
  Dim MediaObject    As Shape
  Dim AnimatedShape  As Shape
  Dim FirstBookMark  As MediaBookmark
  Dim FirstEffect    As effect
  Dim Behaviour As AnimationBehavior
  
  Set Slide = ActivePresentation.Slides(1)
  Set MediaObject = Slide.shapes.AddMediaObject2(fileName, msoTrue, _
   msoTrue, 50, 50)
  MediaObject.Name = "MediaOBject1"

  Set FirstBookMark = AddBookMark(MediaObject, 5000, "bm1")

  Set AnimatedShape = Slide.shapes.AddShape(msoShapeRectangle, _
   0, 0, 100, 50)
  Dim Sequence As Sequence: Set Sequence = Slide.TimeLine.InteractiveSequences.Add(1)
  
  Set FirstEffect = Sequence.AddTriggerEffect(pShape:=AnimatedShape, effectId:=msoAnimEffectAppear, _
  trigger:=msoAnimTriggerOnMediaBookmark, pTriggerShape:=MediaObject, BookMark:="bm1")
End Sub
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66365708

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档