Thursday, March 18, 2010

A couple things

1. Couple of comments on an old post about inserting a flash swf into an Articulate quiz to get the student name from SCORM. Given the interest in this technique I am looking into file hosting options to start to actually post sample files as opposed to just the code. So if you have suggestions for (free) file hosting I would love to hear them.

2. A very geekish article on using alternate grading to increase motivation, I think it's fantastic and could be applied without the heavy gaming overtones.


Should be posting regularly again, I'd give you my excuses, but it's my blog I can post if I want to.

Thursday, February 11, 2010

Developing your own Captivate Playback Controller

Been working on a course that relies heavily on integrating Captivate demos into a large Flash based course environment. Was getting very frustrated at the limitations of the swf that Captivate exports and started wondering if there was a way to access variables within that swf file to control it's playback.

Sure enough thanks to an article at pipwerks about using Javascript to control captivate, I was then directed to the Captivate Giant Manual, which eventually gave me this list of variables that you can use to control a captivate swf if you load it into your flash movie:


rdcmndPrevious
set to 1 to go previous slide

rdcmndNextSlide
set to 1 to go to next slide

rdcmndPause
set to 1 to pause the project

rdcmndResume
set to 1 to resume showing a paused project

rdcmndRewindAndStop
set to 1 to rewind and stop the project

rdcmndRewindAndPlay
rset to 1 to rewind and play the project

rdcmndGotoFrame
go to a specific frame

rdcmndExit
set to 1 to exit

rdcmndInfo
display the information window

rdinfoFrameCount

total number of swf frames in the project (this is not the number of frames in the main Timeline, but the sum of
all slide frames)

rdinfoSlidesInProject
number of slides in the project (including hidden slides)

rdinfoCurrentFrame
current frame (goes from 1 to rdinfoFrameCount when you play the project)

rdinfoCurrentSlide
slide currently playing (zero based)

rdinfoSlideCount
number of slides in the project (not including hidden slides)

rdIsMainMovie
can be used to identify whether the SWF corresponds to the main Adobe Captivate project


Note: To control the project through the skin file, add the prefix cpSkinLoader_mc to the variables.

Friday, February 5, 2010

Internal or Offline Learner Tracking for Articulate Quizmaker

Based on a discussion at the eGuild, it seems there is a demand to setup Quizmaker for tracking users without using a LMS or any online solution.

The following is the beginning steps into creating your own custom tracking, this will show you how to extract users interactions from Quizmaker, from here you will need to use whatever technology (asp, php etc) to save the information.

I think that this solution is perfect for those who have no other option than to develop their own internal solution, and can not use third party web apps. For those who do not have this restriction, I highly recommend that you use Articulate Online. You can go swimming in JS and Server Side Languages all you want but you're not going to get as complete and detailed reports as Articulate Online can offer you.

Anyways, the solution:

1. Publish a Quiz for a LMS

2. In the main quiz folder remove everything except quiz.html, quiz.swf and the quiz_content folder.

3. Create a new javascript file named tracking.js

4. In that javascript write the following function:

function lms_DoFSCommand(command, args)
{
alert("command" + command);
alert("args" + args);
}


5. In quiz.html add this to the header:

<script LANGUAGE="JavaScript1.2" SRC="tracking.js" TYPE="text/javascript"></script>


You should now get Popups while you use the quiz, this shows you all the quiz interactions. From here you can parse and send this information to a flat file.

Wednesday, January 27, 2010

Can't set the adlcp:scormtype in Reload Editor

Reload Editor is a fantastic and free SCORM packaging tool. One problem I ran into with it however is that I can't seem to set the resource attribute 'adlcp:scormtype'. Since an undefined adlcp:scormtype will default to asset, my LMS won't show any Navigation!

So for now I have to manually add adlcp:scormtype="sco" to my resource nodes as a solution.

It looks as though this problem was addressed on the development site for Reload (see issue 873054), however the only compiled release is Version 1, so unless you're savvy enough to get the most recent source code and compile it yourself, you're likely to run into this problem as well.

Anyways hope this tidbit reaches someone wondering why their Reload package is not working in their LMS - your poor little adlcp:scormtype might just need setting!

Monday, January 25, 2010

Browser Focus Issue with Quizmaker

Ran into an issue with Quizmaker in which the Quiz essentially removes focus from the browser (in this case IE 7) and makes it so users need to click twice on any link to get it to work - once to set focus back to the web page, and once to select the link.

I must admit, I don't have a lot of experience with setting Browser focus, and the reasons behind it, but I know that having users trying to click the LMS next button and it not working is a major usability issue!

There is two solutions to this problem, the first one is just to re-write quiz.html and do a standard flash object/embed, replacing the Articulate published script. Now, I don't actually know what all that Articulate script is there to handle, so there is another way to handle this problem without removing all the script.

1. Open quiz_content/quiz.js

2. Search for "player.focus();"

3. Delete that line of code, or comment it out.

I have yet to test this on a Quiz that uses LMS tracking, so I have no idea if the focus is important to the communication, but certainly on a simple knowledge check removing this line will fix the usability bug.

Friday, January 22, 2010

Append Webex presentations (FLV)

Problem:

You have several different exported Webex presentations, and now you want to combine them all into one.

Solution:

A Webex export will give you 5 files for a presentation - index.html, presentation.swf, screen.flv, voip.flv and recording.xml.

The presentation.swf is actually just the 'controller', it's the two flv files that make up the actually video and audio content.

Lets say we want to combine 3 different exported presentations into one, here's how we do it:

1. Rename and Copy the flv files from the 2nd and 3rd presentations and put those files into the 1st presentations folder. You should have 6 flv files in there now.

2. Open the recording.xml file.

Look for this code


<video timestamp="1" name="screen.flv" width="1080" height="824" start="0" duration="7076" keyinterval="10"/>


Note: the timestamp and duration numbers are in seconds

All you need to do is cut and paste that line for each additional video you wish to append and edit the name, timestamp and duration fields. it would look something like this:


<video timestamp="1" name="screen1.flv" width="1080" height="824" start="0" duration="7076" keyinterval="10"/><video timestamp="7076" name="screen2.flv" width="1080" height="824" start="0" duration="5000" keyinterval="10"/><video timestamp="12076" name="screen3.flv" width="1080" height="824" start="0" duration="6000" keyinterval="10"/>


Notice how the timestamp value is the length of the previous videos?

Note: To know the duration of each flv you may want to open up the other presentations recording.xml files and make a note of that value.

So that handles the video, now we do the same for the audio! look for:

<video timestamp="1" name="voip.flv" duration="7076" />


Cut and paste that line just like before editing the name, timestamp, duration fields.

Ok almost done,

3. At the top of the xml file look for:

<recording topic="" number="" ... duration="7076">


You want to edit that duration so that it is the new total length of your demo.

Bingo Bango, an appended presentation without any video editing software necessary!

Wednesday, January 13, 2010

Improving the Quizmaker Matching Drag and Drop question type


Problem:

Articulate's Quizmaker only allows for Right to Left drag drop question types. Meaning the user must drag the rightmost items onto the leftmost. I personally have always felt that users are more comfortable and inclined to go the opposite direction.

Solution:

Unfortunetly there is no magic option in Articulate to solve this for us. So we write our own Actionscript to insert into the question in the form of a SWF file, this SWF file goes into the Quizmaker code and sets things straight.

Directions: (I am not hosting the swf file as of yet so you're gonna need to create it, hopefully I can get it online soon)

1. Create a new SWF 550 by 400 pixels and using Actionscript 2.0

2. The Code: Put this on frame one layer one


ddswitchObjects();

function ddfindObject()
{

var checkObj = this._parent._parent._parent;

for(i in checkObj)
{
trace(i);
if(checkObj[i]._x == 30)
return checkObj[i];
}
return null;
}

function ddswitchObjects()
{
var cur:MovieClip = ddfindObject();
cur.mcScrollContentMask._width = 1000;
cur = cur.mcScrollContent;

for(var i in cur)
{
trace(i + " " + cur[i]._x);
if(cur[i]._x == 16)
{
cur[i]._x = 212;
}
else if(cur[i]._x >= 200)
{
cur[i]._x = 16;
cur[i].startingY = cur[i]._y;
cur[i].onEnterFrame = function()
{
if(this._x == 212){
this._x = 16;
this._y = this.startingY;
}
}
}
}
}



3. Publish your swf!

4. Create a new quiz and a new matching question type.

5. In form view (NOT slide view) select Media -> Flash Movie -> and insert your published swf.

6. Publish Quiz

NOTES:

Obviously there is a flicker problem, meaning when the question loads, first the options are all in their original Quizmaker position before being switched around by our code, this is because of how the Quiz loads the question before the external swf we make, still thinking of a way to fix this...

There is also limitations on the size of the text you can enter for now. My testing and developing has all been done with small words, and the location of the drag items are hardcoded in my code which means to hack the Quizmaker I look specifically for items in certain positions, meaning if the items were longer or bigger than Quizmaker's defaults this code would fail (although I'm working on improving this as well)

That's all, hope someone else uses this, cause i'm putting into a course today!