Integrating Adobe's SCORM Code with Pipwerks AS3 Class

129 views
Skip to first unread message

Ryan Wale

unread,
Sep 8, 2009, 9:36:59 AM9/8/09
to elearning-technolo...@googlegroups.com
The Setup:

Our courses are setup as one SCO that includes both the informational pieces as well as a final assessment (this assessment is a Flash quiz from the CS4 eLearning template).  The only SCORM code involved is contained within the assessment.  It is not found within any other 'pages' of the course.  As such, when a learner closes out the course prior to attempting the final assessment, the LMS shows 'Not Attempted' because no SCORM exists until the quiz is reached.

The Issue:

Last week, my boss mandated the implementation of bookmarking within our courses. My first thought is to use the Pipwerks class; however, I'm not sure if this will work as I am already using Adobe's SCORM code within the final assessment as well as their JavaScript wrapper.

Before I dive into this, I was hoping to get thoughts from others regarding this setup.  Am I able to have 2 different JS wrappers in a single course? Will this cause conflict within the LMS?  Is there a better way to set this up?

A Bit More Information:

I know its difficult answering questions blindly, so here's a brief description of the template (tried to attach it, but it was a no go).  It consists of a main SWF that calls up external SWFs (i.e. 'pages') via XML.  It also includes Adobe's SCORM wrapper(s).  Again, the only SCORM code is found on the Final Assessment SWF. 

Hopefully, I've explained this well enough.  If you have further questions, please don't hesitate to ask.

As always, I really appreciate your help!!

Ryan


Nathan Mynarcik

unread,
Sep 8, 2009, 9:44:27 AM9/8/09
to elearning-technolo...@googlegroups.com
Correct me if I'm wrong group, but it shouldn't matter what wrapper you're using, as long as in your SWF file you are connecting to the LMS via a SCORM instance in your actionscript.  If you already have a scorm instance, then the call should be the same to the LMS for tracking:


Setting the bookmark:
instanceNameOfScormConnection.set("cmi.core.lesson_location", "someString"); //normally I use an integer that represents the SWF file that I have loaded, or the sections in the course.
instanceNameOfScormConnection.save();

Getting the Bookmark from the LMS:
instanceNameOfScormConnection.get("cmi.core.lesson_location")

rsug...@sugels.com

unread,
Sep 8, 2009, 10:27:21 AM9/8/09
to elearning-technolo...@googlegroups.com

That’s correct Nathan as long as the SCO is finding and initializing the SCORM API at the beginning of the SCO. In Ryan’s case I’m not sure whether that is happening since he employs a Flash shell to load other Flash content and (an assumption here) his quiz.swf is the only SCORM’d content being used. It sounds as if Adobe’s intention for the quiz gadget in CS4 is designed to be an individual SCO, not incorporated into another SCO. Ryan, let me know if my assumption is incorrect. From the sound of it, it would take a bit of rework, you’d basically want all your SCORM code (Flash functions that call out to the JS wrapper) in the Flash shell and then call them from the child SWFs.

 

Raymond Sugel Sr

eLearning Consultant
847.370.6163
rsug...@pivotpointelearning.com
www.pivotpointelearning.com

Philip Hutchison

unread,
Sep 8, 2009, 11:08:48 AM9/8/09
to elearning-technolo...@googlegroups.com
Hi Ryan

Technically you *can* use more than one wrapper so long as you don't repeat the 'LMS initialize' call or prematurely invoke 'LMS terminate' or exit. If you decide to use the pipwerks SCORM wrapper, it has been designed to avoid global variables and should work in your course without causing any conflicts with the Adobe SCORM wrapper. It's up to you to use it in a way that doesn't interfere with the Adobe SCORM calls.

Having said that, I suggest avoiding this two-wrapper scenario because of the increased likelihood of errors and potential difficulty of diagnosing those errors.  I suggest you stick to one wrapper.  In this case ou should probably stick with the Adobe wrapper simply because it's already integrated in your course.  You'll just need to figure out where to place your bookmarking code, which shouldn't be too difficult.

- philip

Ryan Wale

unread,
Sep 8, 2009, 11:33:38 AM9/8/09
to elearning-technolo...@googlegroups.com
Everyone - Thanks for the info...
 
Ray - Your assumption is absolutely correct.  When I was creating the template, I argued to make the Final Assessment a separate SCO as it is clearly setup to be because I knew this day would come and I'd need to add more functionality.  Although, I was hoping the day would come in 2012 LOL...
 
Phil - I'm with you.  The 2 wrapper scenario scares me a bit.  You say I need to figure out where to place the bookmarking code.  I'm cool doing that, but I'm not quite sure what questions to ask in order to determine the best place to place the bookmarking code.  The SCORM calls are only contained in 1 of the external swfs (i.e. Final Assessment).  In this external SWF, you find 'LMS initialize' and 'LMS terminate'. 
 
Here's what I'm thinking (and please forgive me if I'm way off base)...
 
1. Remove the LMS initialize from the Final Assessment SWF
2. Enter the LMS initialize in the Main SWF that calls each page via XML
3. Do something within the ActionScript in the main shell that determines what page is being viewed
4. Enter the bookmarking code on each child SWF
 
Am I even in the right ballpark with this logic??

Nathan Mynarcik

unread,
Sep 8, 2009, 11:42:16 AM9/8/09
to elearning-technolo...@googlegroups.com
What I have used is in my loader that loads the child swf via your XML document, I have placed the command scorm.set("cmi.core.lesson_location", variable); where scorm is the instance that connects to the wrapper/lms and variable is your changing variable that keeps tabs on what is loaded in your Main swf.  Followed by a scorm.save();

This will set the location.  Now, when the user starts the course, have your code grab this info from the user's profile and then call your loader to load the variable you got from the user's bookmark.

I did add some more functionality to it that used ExternalInterface to call Javascript confirm and alert boxes to allow the user to choose if they want to go where they left off or start at the beginning.  But I wouldnt worry about that stuff until you are setting and getting your bookmark correctly first.

Hope this helps...

rsug...@sugels.com

unread,
Sep 8, 2009, 12:10:29 PM9/8/09
to elearning-technolo...@googlegroups.com

Ryan, if I were doing it I’d:

 

1.    Place all SCORM functionality in your shell SWF; Find the API, Initialize it, Get, Set, Commit, Diagnostics (if desired) and Terminate.

2.    Place a function call to the Flash function that ultimately calls SetValue with the parameters “cmi.location”, location where location is whatever you’re going to use to determine which “page” the user is on in each external SWF as it loads.

 

This approach will take a fair amount of reworking the Adobe quiz SCORM stuff to reference what is contained in the shell. Call if you’d like some assistance with this.

 

Raymond Sugel Sr

eLearning Consultant
847.370.6163
rsug...@pivotpointelearning.com
www.pivotpointelearning.com

 

Ryan Wale

unread,
Sep 8, 2009, 12:41:49 PM9/8/09
to elearning-technolo...@googlegroups.com
Hey Ray,
 
I might just do that.  If I have to rework the SCORM behind the quiz, I'm going to need some help.  I'll contact you offline via email to set something up.  Thanks so much!!!

Cor

unread,
Sep 11, 2009, 9:54:26 AM9/11/09
to elearning-technolo...@googlegroups.com

Hi List,

When I start my app from Moodle, I have LMS connection, the course is set to incomplete (which I set in my app).

Here my debug text:
 lmsConnected is true
 lessonStatus is incomplete

And after that my lmsConnected is false and even if I try :

lmsConnected = scorm.connect()

it won’t connect anymore.

Any suggestions?
Thanks you. 

Kind reards

Cor

 

Reply all
Reply to author
Forward
0 new messages