You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

LibreOffice Impress演示模式下宏切换幻灯片功能失效的问题咨询

LibreOffice Impress演示模式下宏切换幻灯片功能失效的问题咨询

我制作了一个包含两张幻灯片的.odp文件,具体设置如下:

  • 幻灯片1:有一个圆形,点击它会切换到幻灯片2,仅使用简单交互,没有宏。
  • 幻灯片2:有一个正方形,点击它会先隐藏幻灯片1的圆形,再切换回幻灯片1。这里用了交互+鼠标点击触发宏,交互界面显示宏的路径是vnd.sun.star.script:Standard.Module1.Hide?language=Basic&location=document

对应的宏代码如下:

Sub Hide

REM Define objects

Dim oDoc As Object
Dim oSlideList As Object
Dim oSlide As Object
Dim oSubject As Object
Dim oController As Object

REM oDoc refers to this presentation
oDoc = ThisComponent

REM oSlideList refers to the list of slides
oSlideList = oDoc.getDrawPages()

REM oSlide refers to the first slide
oSlide = oSlideList.getByIndex(0)

REM oSubject refers to the first object of the first slide
oSubject = oSlide.getByIndex(0)

REM Sets oSubject to be invisible
oSubject.Visible = False

REM Moves back to the first slide
oController = oDoc.getCurrentController()
oController.setCurrentPage(oSlide)

End Sub

测试过程中我遇到了奇怪的问题:

  1. 启用宏后按F5进入演示模式,点击幻灯片1的圆形可以正常切换到幻灯片2,符合预期。
  2. 但点击幻灯片2的正方形时,并没有切换回幻灯片1,我按Esc退出演示模式后,却发现幻灯片1的圆形已经被隐藏了——说明宏确实执行了隐藏操作,但切换幻灯片的部分失效了。
  3. 把圆形恢复可见后,不进入演示模式,在幻灯片2右键点击正方形选择「执行交互」,此时圆形消失,同时成功切换到了幻灯片1,代码完全正常。
  4. 再次恢复圆形后,通过开发者菜单找到Hide函数并点击运行,代码也能完整执行(隐藏圆形+切换幻灯片)。

现在我怀疑是不是在演示模式下用错了切换幻灯片的API?如果是这样的话,应该怎么修改宏里的oController部分呢?

备注:内容来源于stack exchange,提问作者wc80399

火山引擎 最新活动