javascript - 在 Adobe Captivate 中无法运行的神秘 While 循环,如何修复?
问题描述
我有一个 javascript 代码可以在 Adobe Captivate 的时间线的特定帧中执行 javascript。
这是 JS 窗口中的代码:
window.cpAPIEventEmitter.addEventListener("CPAPI_VARIABLEVALUECHANGED",function(){
if(window.cpInfoCurrentFrame === window.exactFrame)
{
cp.movie.pause(cp.ReasonForPause.CPCMNDPAUSE);
speechResult ="hello";
window.cpAPIInterface.setVariableValue("SpeechReceived",speechResult);
}
},"cpInfoCurrentFrame");
它将在时间轴中的特定帧(“exactFrame”返回的帧号)上触发 JavaScript 代码......为了更清楚,我使用这些代码行在特定帧暂停时间轴,然后注入我的字符串变量(“例如,你好”)从 javascript 到迷人(我成功了,因为我可以在我的屏幕上看到更改变量“SpeechReceived”)。但问题是,即使我在屏幕上看到“SpeechReceived”更改为“hello”,Captivate“While loop”不起作用,我也无法“继续”电影......
这是我的简单项目的屏幕截图:
这些是我构建“reza”脚本的决策块:
前三个动作计算幻灯片第二个 2 的确切帧,并将该帧号保存到“exactFrame”变量。
然后它在时间线的第二个 2 处执行 Script_Window。
在 Script_Window 中,我有一个 JavaScript 来更改名为“SpeechReceived”的变量的值,并且它还暂停了我之前所说的时间线。
现在请看我最后的决定:
每当“SpeechReceived”等于“hello”时,我想继续我暂停的时间线,但问题是:虽然我的变量“SpeechReceived”更改为“hello”,但什么也没发生......似乎while循环不起作用这里出了问题......我错过了什么吗?(这是一个语音识别应用程序,可在用户语音输入时将“SpeechReceived”更改为“hello”......
用户说“你好”,时间线继续电影......实际上我们等待用户的声音(“你好”)才能继续......
这听起来很神秘,为什么在世界上while循环不起作用......)
任何想法如何修复该错误?
解决方案
我建议不要在第二个块中使用“继续”命令,而是使用 Captivate 的命令从帧恢复 - cpCmndGotoFrameAndResume。
如果您希望播放头从第 2 帧继续,那么您将添加以下内容来代替“继续”命令 - cpCmndGotoFrameAndResume = 2
多年来,我在 Captivate 中进行了许多基于框架的交互……而 ole 内置的框架命令对我来说是正确的。我有
希望这可以帮助你..
推荐阅读
- javascript - 用 div / class 隐藏 li 项目
- amazon-web-services - AWS GovCloud 中 Cognito 的替代方案
- azure - 企业必应地图 - URL 引荐来源网址
- css - 如何在 Safari 和 Chrome 中类似地呈现按钮?
- xquery - 布尔值在 xquery 中不可赋值
- python - 如何在不创建新会话的情况下配置“requests.get(url)”调用并重试?
- node.js - 为单个对象创建/添加生命周期配置
- c++ - 这是创建控制台应用程序的正确方法吗?
- php - Laravel:更新用户最旧的令牌
- use-case - 工厂模式的小而现实的用例?