2

使用 VSTO 和 PowerPoint 2010,我正在尝试将音频文件插入到 PowerPoint 幻灯片中,并在幻灯片显示时自动播放。我用下面的代码做到了这一点:

var presentation = Gobals.ThisAddIn.Application.ActivePresentation;
var slide = presentation.Slides[1];
var audioShape = slide.Shapes.AddMediaObject2( audioFilePath );
var audioShape.AnimationSettings.PlaySettings.PlayOnEntry = Microsoft.Office.Core.MsoTriState.msoTrue;

现在,在幻灯片中已经有项目符号的动画(由 Effect 对象表示)。每个要点都有一个 Effect 对象。我的加载项将它们从点击触发转换为自动运行。这是通过类似于以下的代码完成的:

var effect = slide.TimeLine.MainSequence[1];
if ( effect.Timing.TriggerType == PowerPoint.MsoAnimTriggerType.msoAnimTriggerOnPageClick )
{
   effect.Timing.TriggerType = PowerPoint.MsoAnimTriggerType.msoAnimTriggerWithPrevious;
   effect.Timing.TriggerDelayTime = delay;
}

要点动画的最终目标是让每个动画在一定延迟后单独显示。

我的问题在于将音频形状设置为自动启动。这会导致每个项目符号点的单独效果对象被所有项目符号点的一个效果替换。因此,所有要点都立即显示在屏幕上,而不是在它们之间有延迟。我先插入音频还是先修改子弹效果都没有关系。

必须有一种方法可以将音频设置为自动播放而不会弄乱其他效果,因为您可以在 GUI 中进行操作。任何人都可以帮忙吗?提前致谢。

4

1 回答 1

1

(抱歉,如果这更适合作为评论 - 我还没有能力添加这些。我也意识到这个问题现在已经过时了。)

我刚刚遇到了一个类似的问题:设置任何PlaySettings属性后,幻灯片上的所有退出动画都将被删除,所有设置为“With Previous”的动画都变成了“After Previous”。

我遇到了这个链接,这表明该AnimationSettings对象是旧版本 PowerPoint 的保留,并且可能会在新版本中搞砸。进一步来说,

如果您在新版本中使用 AnimationSettings 对象设置任何动画属性,Microsoft PowerPoint 将从幻灯片上已设置的动画中删除所有早期版本中不支持的动画。

(该链接将 XP/2003 称为“新版本”,但即使在 2013 年,这种行为似乎也是一致的。)

本质上,通过设置音频设置AnimationSettings.PlaySettings会触发删除旧版本 PowerPoint 中不可用的动画。不幸的是,似乎没有其他方法可以这样做。

于 2014-01-10T09:14:46.597 回答