You also need to call terminate at some point. Your API call may be
LMSFinish() or something like that. The name varies.
I am in the minority here probably when I say that it's not a great
idea to call the API directly from Flash. It just makes it harder to
update versions of SCORM or use your content outside of SCORM. But
most people do it. I choose an approach similar to Articulate, which
provides an abstraction above the apiwrapper. This way, if you go
from 1.2 -> 2004 -> AICCC -> normal web delivery, it's just a matter
of swapping out JS files or toggling some variables. No need to
re-export the SWFs.
jpc
> --
> You received this message because you are subscribed to the Google Groups "eLearning Technology and Development" group.
> To post to this group, send email to elearning-technolo...@googlegroups.com.
> To unsubscribe from this group, send email to elearning-technology-and...@googlegroups.com.
> For more options, visit this group at http://groups.google.com/group/elearning-technology-and-development?hl=en.
>
>
--
John Campbell
(713) 364-4323
Hey, whatever works! I just don't like having to open a tool to
modify content when it's easily done JS with MacVim. :-) This way,
when whatever they do with CMI-5/SCORM comes around, it's not going to
be hard to reuse and edit with easy fixes. I don't own Flash, nor
care to.
jpc
--
Yeah, I always try and preface things with the fact that I'm a bit
different than many cases.
The de-coupling from standards is one benefit. The main one I have
actually taken advantage of myself is that it's easier to provide a
Flash dev with a clean API than to expose them to the cmi based API
wrapper. It's also easier to do different things with the data after
the production team is done with it and moved on. In my company, we
had about 7-10 Flash devs. Not one knew anything about SCORM, nor did
they want to. And they certainly did not need to. The API I provided
them took very little ramp up time as it was generic and made more
sense to the newbie than the cmi.data model related API. It's also
much easier to maintain. Even if you don't like JS, it's easier to
edit and test on an LMS.
Also, the insanity I see in CP courses with the SCORM API being
blasted from all directions makes me hate how the tight coupling leads
to problematic courseware, especially for 2004. I think the
Articulate approach (done by Rustici) validates that architecturally
it's more sound. Adobe, in my opinion, has completely missed the mark
with regards to SCORM 2004. It seems they did "just enough" to be
somewhat compliant, but had little regard for functionality. The fact
that you CAN'T create a SCORM 2004 multi-SCO sequenced course without
hacking the JS traffic, is disheartening. Maybe that was too blanket
a statement, but it's close enough.
> * For most people, if the course is a one-time deal or if they're in a
> hurry, it probably isn't worth the overhead of building an abstraction
> layer.
I would not do it, if it's one layer per course. I used a single HTML
file and JS library set for the last 2 years of delivering SCORM 2004.
It's a one time deal.
> Again, I agree with you on principle, but abstracting on the level you
> suggest is best suited for people who build courses that need to work with
> multiple standards (SCORM 1.2, SCORM 2004, AICC, etc.) and can quickly be
> flipped from one standard to another by setting an option in a
> JavaScript-based config file.
Again, I use that as an example benefit. I have only delivered in
2004 to be honest.
> Unless, of course, someone builds that abstraction layer as an open-source
> solution free for everyone else to use. :)
It's more conceptual than anything. I just developed a generic
scoring object and API in terms that our devs were more familiar wtih.
It evolved over the first few years and then was almost bulletproof
for the final 2-3.
jpc
jpc
--
John Campbell
(713) 364-4323
--
John Campbell
(713) 364-4323
Ridgie
Barton
piXvfm
jpc
--
John Campbell
(713) 364-4323
http://pipwerks.com/2011/02/24/abstracting-your-courses-tracking-code/
If you are interested, I have no issue sharing my framework with you.
I'd probably have to conceptually re-write it for IP reasons before we
released it. But I am about to do that anyway for an upcoming
project. SInce it is an evolution of code, some refactoring is
probably needed. Also, it was for our needs, so it may need more
breadth.
jpc
--
John Campbell
(713) 364-4323
John: your interface sounds great, especially the ability to hide the
scorm details from the flash developers. As a flash developer, I would
love to have something like that!
Sharon
> John Campbell
> (713) 364-4323
Hello David,
I’m not a Flash developer, but I’ve done this exact thing using JavaScript as follows:
1. I use an array to capture chapter completion status
2. Every five minutes and on course exit I send data to the LMS using LMSSetValue/LMSCommit
3. When my function to send data to the LMS is called I loop through the chapter completion array and set a variable to true or false depending on whether all chapters are complete:
function sendDataToLms(){
for (i = 0; i < aChapComp.length; i++){
if(aChapComp[i] == 1)
var bAllComp = true;
else{
var bAllComp = false;
break;
}
}
if(bAllComp)
LMSSetValue("cmi.core.lesson_status","completed");
else{
LMSSetValue("cmi.core.lesson_status","incomplete");
LMSSetValue(“cmi.core.exit”,”suspend”);
var sChapComp = aChapComp.join(";");
LMSSetValue("cmi.suspend_data",sChapComp);
}
LMSCommit();
}
Raymond Sugel Sr
eLearning Consultant
224-293-4135 (O)
847-370-6163 (C)
rsug...@pivotpointelearning.com
www.pivotpointelearning.com
--