Avoiding ActionScript Version Compatibility Issues

So you have this Adobe Captivate 3 or 4 project that was working perfectly...then you upgraded it to Captivate 5 or later and republish.  Suddenly you have all kinds of weird issues that weren't there before.  It can range anywhere from stop-start glitchy playback, to flashing graphics, to a complete browser crash every time you try to run your content.  The cause is often due to ActionScript version incompatibility.  Here's why...

About ActionScript Versions in Adobe Captivate

ActionScript, or AS for short, was originally developed by Macromedia (before it got gobbled up by Adobe) and was based on the ECMAScript standard, which gives it a syntax similar to JavaScript.  There have been versions of AS has been around since 1998, but the official version 1.0 appeared in year 2000.  This version wasn't able to do very much.  But then AS 2.0 came out in 2003 and vast new possibilites emerged for Flash developers. However, AS2 wasn't really a full-fledged Object-Oriented Programming Language. But then AS3 appeared in 2006 and finally Flash developers had all the programming power they could use...and then some.

Adobe Captivate 1 to 3 could only publish content as ActionScript 2.  Then in Cp4 you got the option in Project > Preferences of selecting either AS2 or AS3 with AS2 being the default setting.

Captivate 4 Preferences Dialog

If you selected AS3, this also narrowed down your target Flash Player version to FP 9 or later because they were the only ones that could run AS3 content. Once Captivate 5 was released e-learning authors were given no choice other than AS3. This also means you cannot publish content for any Flash Player version earlier than FP9 because no earlier version would run AS3 content.  By the way, FP 10 is still able to run AS2 content (because it still has the ActionSript Virtual Machine 2), but obviously it works better and faster with AS3 because it's optimised for that version.

AS3 / AS3 Incompatibility Causes

This whole area of ActionScript versioning comes with some potentially devastating gotchas for e-learning developers. For example, if you happen to have a project originally created in Cp1-4, then chances are that your project will have at least some AS2 components (discussed below). If you one day decide to open the project in Cp4 and change the output SWF option over to AS3, you may find playback falling apart at runtime. By the same token, if you have a project from Cp4 that gets upgraded to Cp 5 or 5.5 (where AS3 is the only option) then you can also suddenly start experiencing issues if any of the components it contains are not AS3 compatible.

Captivate Components That Can Cause Issues

Widgets

Many Captivate authors tend to blame widgets in the project for all of these woes, and widgets CAN certainly be the reason.  But developers tend to overlook the fact that widgets are NOT the only ActionScript components in a typical Captivate movie, and even a single AS2 component in an AS3 Captivate project can be enough to bring the published.SWF to its knees. 

Flash / SWF Animations

These are also published to a specific ActionSript version and unless you created them yourself in Flash it can be sometimes very difficult to determine whether the SWF is AS2 or AS3.  Most reputable developers use some device such as a filename prefix or suffix to indicate the AS version.  But this is by no means guaranteed. 

Text Animations

Yes these are also SWFs and therefore can be responsible for compatibility issues.  When Captivate 5 was released text animations were given an overhaul and replaced with new SWFs that were actually a special kind of Captivate widget.  Back in December of 2010 a Flash Player version 10.1.102.64 was released that broke every Captivate 5 project containing text animations.  It took a new version of Flash Player and a patch to Captivate 5 to resolve the issue.  So don't underestimate text animations.

Skins

A project created on your PC in Cp4 that gets upgraded to Cp5 or later will also likely have a skin that provides the playbar and TOC functionality we all love.  Again, the name of the skin is no guide to what AS version it is.  Skins are especially suspect if you are using a custom skin that was orignally developed to conform to some corporate branding requirement.  If these have been around for more than a couple of years it's almost certain that they would be AS2.

Preloaders

Most Captivate projects delivered via the web use preloaders to enhance the user experience.  Preloaders are really just SWF files that contain the required code and graphics to pull off the handy little feat of playing an absorbing animation to watch while your content ownload and buffers up by the nominated percentage.  Since they're an SWF, they must also be published to an AS version. 

What You Can Do to Avoid ActionScript Compatibility Issues

So let's assume for a moment that you believe your playback issues are related to AS incompatibility.  What are your options?  Here are some things that have worked for me:

  • If you believe a widget or SWF may be causing your issue, untick the Visible checkbox under its Item Name and try publishing again.  If the issue still occurs, try hiding the entire slide on which the object occurs.  This means that the slide does not get published out with that movie output.  If the movie functions correctly, try removing the widget or SWF and replacing it with one that you can confirm is the correct AS version.

    Widget Visible Checkbox
  • Go to Project > Preferences > Project > Start and End > Preloader.  Check that the path to the preloader is definitely pointing to the correct location to ensure it would be an AS3 preloader (if you project is AS3. 

    Preloader Source File Path
    In the case shown here you can definitely see that the preloader file is from the Captivate 5.5 repository, which means it MUST be AS3.  However, if this was a project that had been upgraded from Captivate 4, and I still had Cp4 installed on my system (which I do), it's quite possible that the path shown to the preloader could still be pointing back to the Cp4 folder structure and the preloader might actually turn out to be AS2.  If in doubt, untick the Preloader box, publish the movie and check whether the playback issue has disappeared.  Always set up your preloader again after upgrading to a new version of Captivate.
  • Locate any text animations in your project and try hiding the slides on which they appear to see if this resolves playback issues. If it does, they may either be the wrong AS version or could simply be corrupt. Try removing them and reinserting new text animations using the latest Captivate version you have. 
  • Remove your current movie skin altogether and republish the movie to test for issues.  If the playback issue has disappeared, set up another skin that comes with the most recent version of Captivate.  If the project contains a customised skin, only keep it if you can confirm that it is the correct AS version.  This can be an issue because many times the original FLA files used to create the skin get lost and developers move on to more lucrative programming pastures.

Conclusion

These are just a few suggestions.  The good news is that most ActionScript compatibility issues are relatively easy to track down because the list of objects that can cause them is quite short.

If you've found another source of AS compatibility issues over and above the ones listed here, use our Contact page to tell us about it so that we can add the information for the benefit of other users.

IF YOU LIKE WHAT YOU'VE READ ABOVE, THERE'S PLENTY MORE!

Join more than 2500 other Adobe Captivate users just like yourself and receive regular troubleshooting tips, illustrated tutorials, technical information, and creative solutions to real-world e-learning development issues. (See an example here.) Click the button below to join our community.  It's completely FREE!