急急急 ppt 播放同步问题

阅读次数 35

背景:PPT 模式

经过: 演讲者打开wps之后自动播放后发送给听众消息,数据格式如下:

{
	type: 'SlideShowBegin',
	value: {slideIndex: 7, clickIndex: 0}
}

听众接收到数据后执行如下方法:

  async listenerInit(optionInfo: any) {
    switch (optionInfo.type) {
      //....		
      case 'SlideShowBegin':
        await this.wpsApplication.ActivePresentation.SlideShowSettings.Run()
        await this.wpsApplication.ActivePresentation.SlideShowWindow.View.GotoSlide(optionInfo.value.slideIndex)
        await this.wpsApplication.ActivePresentation.SlideShowWindow.View.GotoClick(optionInfo.value.clickIndex)
        await this._setMenusVisible(false)
        break
	  //...
	}
  }

optionInfo 的数据就是演讲者发送的数据。

问题: 只执行了 this.wpsApplication.ActivePresentation.SlideShowSettings.Run() 全屏播放,后面的 GotoSlide 和 GotoClick 不会执行,导致播放时只播放到第一页

ps:ppt页面大于10页

1 Answers

你好,请确认一下slideIndex,clickIndex的值是多少? 或者先使用最简单的逻辑: 文档初始化后,直接调用运行,看看一下代码能否跳转至第3页数。

await this.wpsApplication.ActivePresentation.SlideShowSettings.Run()
await this.wpsApplication.ActivePresentation.SlideShowWindow.View.GotoSlide(3)

如果是演讲者单独执行Run GotoSlide这几个函数是能跳到对应页码的;我这边出现问题的场景是听众角色这边(演讲者同步当前画面给听众),为了印证每一个异步方法是否有执行,我在每个 await 后添加了console,代码如下;出现问题时听众停留在播放第一页,但是控制台三个console都有输出(顺序 Run GotoSlide GotoClick),相当于只执行了 Run; 如果演讲者再进行操作,此时听众画面才能同步

await this.wpsApplication.ActivePresentation.SlideShowSettings.Run() console.log('Run') await this.wpsApplication.ActivePresentation.SlideShowWindow.View.GotoSlide(optionInfo.value.slideIndex)
console.log('GotoSlide')
await this.wpsApplication.ActivePresentation.SlideShowWindow.View.GotoClick(optionInfo.value.clickIndex)
console.log('GotoClick')