addressing SCORM variables in different versions of Captivate
I know since Captivate 6, Captivate has used the Rustici SCORM engine which is by far the best that I know of, and this has continued to my knowledge through to version 9. But, the difficulties come in when you do ANYTHING outside the norm in terms of slides, pages and assessments, for example using a single slide with numerous frames which match the frames of an imported video. Trying to get ANY information or specific examples of interacting with SCORM between the various versions is like milking a gerbil. I am specifically using Captivate 9, and I've tried SCORM_Call, etc. since I'm using SCORM 1.2 but no code that I've tried is doing what I want, which is simply detecting if the entire movie has been watched based on current frame, and bouncing that against total frames of the slide the SCO would set either "completed" or "incomplete" setting resume data as appropriate and then calling an LMSFinish(). TO exacerbate the problem, I'm forced to used a significantly customized version of an older LMS that displays SCORM 1.2 content in a pop-up window, first with a frameset that has course description on top , outline parsed from manifest on left frame, and any metadata info tied to each SCO within the right frame. Either the window closes entirely, closing the SCORM Session, and not allowing the user to choose the next SCO, or it just sits there at completion of video, and the user ultimately has to close the window manually via top right window controls, with same result, entire SCORM session is closed, instead of simply the SCO closing via a properly interpreted LMSFinish() and if completed, the SCO gets it's little "checkmark" and you would go onto the next SCO. I have tried so many differing iterations at this point, I'm just getting frustrated, and I need to reach out to the Captivate Users here on Adobe forums to try and get me going in the right direction.
Here's and example of the last thing I tried, and as I said, I don't know if in Captivate 9 I MUST user JSInterface or not!? Here's a few different versions of what I have tried to no avail.
var CpObj = document.Captivate;
var cpFC = cpInfoFrameCount;
var cpCF = cpInfoCurrentFrame;
if (this.CpObj.cpCF == this.CpObj.cpFC) {
SCORM_CallLMSSetValue('cmi.core.lesson_status', 'completed');
SCORM_CallLMSSetValue('cmi.core.suspend_data','');
SCORM_CallLMSSetValue('cmi.core.exit','');
SCORM_CallLMSFinish();
SetReachedEnd();
}
else {
SCORM_CallLMSSetValue('cmi.core.lesson_status', 'incomplete');
SCORM_CallLMSSetValue('cmi.suspend_data', this.CpObj.cpCF);
SCORM_CallLMSSetValue('cmi.core.exit','suspend');
SCORM_CallLMSFinish();
}
V2
var CpObj = document.Captivate;
var cpFC = cpInfoFrameCount;
var cpCF = cpInfoCurrentFrame;
if (this.CpObj.cpCF == this.CpObj.cpFC) {
SCORM_CallLMSSetValue('cmi.core.lesson_status', 'completed');
SCORM_CallLMSSetValue('cmi.core.suspend_data','');
SCORM_CallLMSSetValue('cmi.core.exit','');
SCORM_CallLMSFinish();
SetReachedEnd();
window.history.go(0);
}
else {
SCORM_CallLMSSetValue('cmi.core.lesson_status', 'incomplete');
SCORM_CallLMSSetValue('cmi.suspend_data', this.CpObj.cpCF);
SCORM_CallLMSSetValue('cmi.core.exit','suspend');
SCORM_CallLMSFinish();
window.history.go(0);
}
