我有一个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代码... 更清楚地说,我使用这些代码行在特定帧处暂停了时间线,然后将我的字符串变量(例如“ hello”)从javascript注入到了迷住状态(那是成功的,因为我可以看到在我的变量上更改了“ SpeechReceived”屏幕)。但是问题是,即使我在屏幕上看到“ SpeechReceived”已更改为“ hello”,Captivate“ While loop”也无法正常工作,而且我无法“继续”播放电影...
这是我的简单项目的屏幕截图:
这些是我构建“ reza”脚本的决策块:
前三个动作将计算出幻灯片第二个第二帧的确切帧,并将该帧号保存到“ exactFrame”变量中。
然后,它在时间轴的第二秒立即执行Script_Window。
在Script_Window中,我有一个JavaScript来更改名为“ SpeechReceived”的变量的值,并且它会像我之前所说的那样暂停时间轴。
现在请看看我的最后决定:
无论何时“ SpeechReceived”等于“ hello”,我都想继续我暂停的时间线,但这是问题所在:尽管我的变量“ SpeechReceived”更改为“ hello”,但什么也没发生……似乎while循环不会工作,这里出了点问题...我错过了什么吗? (这是一个语音识别应用程序,可在用户语音输入时将“ SpeechReceived”更改为“ hello” ...
用户说“你好”,时间轴继续播放电影...实际上,我们等待用户的声音(“你好”)以继续...
听起来很神秘,为什么在世界上while循环不起作用...)
任何想法如何解决该错误???
答案 0 :(得分:0)
我建议不要使用Captivate的命令从帧中恢复cpCmndGotoFrameAndResume。而不是在第二个块中使用“ Continue”命令。
如果您希望播放头从第2帧继续播放,则可以添加以下内容代替“ continue”命令-cpCmndGotoFrameAndResume = 2
这些年来,我在Captivate中进行了许多基于框架的交互……而ole内置的框架命令使我做对了。我
希望这对您有所帮助。