Posts in Category "Under the hood"

October 20, 2010

Flex based widgets

Have you ever used Adobe Captivate widgets? Widgets can enhance the type of content you can create with Adobe Captivate. You can leverage the complete capabilities of Adobe Flash via widgets. Once created, widgets can be used any number of times just like any other Captivate object. This really helps in creating engaging rapid elearning content. Captivate ships with a number of useful widgets. Captivate widgets are basically swf files which follow certain rules. One rule being (the blog is about this rule), the widget swf should register certain callbacks via External Interface. These callbacks should be made in the first frame of the swf.

Most of the widgets created for Captivate are Adobe Flash based widgets. Creating widgets using Adobe Flex/Flash builder is a little tricky. But once you get to know that, creating really powerful widgets takes no time. With Flex, you can leverage the vast set of inbuilt components which are powered by Flex framework to create rich and engaging Captivate widgets.

If you had ever tried creating a Captivate widget in Flex, I guess most of you wouldn’t have succeeded. You might have tried adding the External Interface callbacks either in applicationComplete or creationComplete handlers of the Application class in Flex. This method doesn’t work because Flex creates the Application in its second frame, where as Captivate expects the callbacks to be added in the first frame.

So, here we are providing a hassle free way to create Flex based widgets for Captivate. Follow these four simple steps and you can create your Flex based Captivate widgets in no time.

Step 1: Include the two ActionScript files provided below, in your Flex project.

Step 2: In your main mxml file, Change the mxml application start tag from

<s:Application  to  <cp_widget:CPWidgetApplicationBase xmlns:cp_widget="*"

And the end tag from

</s:Application>  to  </cp_widget:CPWidgetApplicationBase>

Step 3: Open and set the properties marked in TO BE SET BY WIDGET DEVELOPER section, according to your requirement.

  • mWaitForSnapshot:
    • Set this to true, if you are overriding IsReadyForSnapShot function in your main application, else keep it false
  • mWidgetType :
    • To create a static widget, set mWidgetType to 0
    • To create an interactive widget, set mWidgetType to 1
    • To create a question widget, set mWidgetType to 2
  • m_EditModeWidth:
    • If you want a specific Edit Mode width, set this parameter, else set it to -1
  • m_EditModeHeight
    • If you want a specific Edit Mode height, set this parameter, else set it to -1

Step 4: Override the widget specific methods provided in file in your main mxml file. For example, if you are trying to create a static widget, add these methods in your main mxml file and build the logic.

  • override public function getInspectorParameters():Object
  • override public function setInspectorParameters(inParam:Object):void
  • override public function setParameters(inParam:Object):void
  • override public function cpSetValue(inVariable:String, inValue):void
  • override public function IsReadyForSnapShot():Boolean

Overriding all the functions is not a must. Choose which functionality you want in your widget and proceed accordingly.

That’s it!! It’s not difficult at all.

Optionally, if you want to mute further calls from Captivate, which might be required when you do state changes in Flex, call setCanDelegateCall(false) in your application class. When you want to unmute, call setCanDelegateCall(true).

If you are using mx:application, then you need to do these changes in Uncomment, Import mx.core.Application; and comment out import spark.components.Application;

In case you are having issues with getting the flex widget to work, you need to merge the Flex framework into the swf. To do so, Goto Project > Properties > Flex Build Path > Library Path > Select the Flex SDK and choose ‘Merged into Code’ as the linkage type.

Provided below are sample flex based widgets for Adobe Captivate 5 created in Flex along with the source.

MyFlexWidget is a static widget, which displays whatever is entered into it in widget properties.

MyInteractiveWidget is an interactive widget; you can select which button is the correct one among the given two, and that one will act as the correct answer

MyQuestionWidget is a question widget; which has similar functionality as that of the interactive widget.

Try them for yourself!

Flex & Widgets

Update: To compile the samples, you need to update the class path.To update the path, Goto Project > Properties > Flex Build Path > Source Path > Edit.

Just update the path to the following.
[Adobe Captivate Installation Directory]\ActionScript\export\as3

[Adobe Captivate Installation Directory] is the directory where captivate is installed. Typically it will be C:\Program Files\Adobe\Adobe Captivate 5

Posted by Ravi Kishore12:16 PM Permalink
October 5, 2010

Adding custom navigation buttons to imported PowerPoint slides

Many trainers start their eLearning content authoring from MSPowerPoint. And then use tools like Adobe Captivate or Adobe Presenter to covert these PPTs into elearning courses.  Captivate automatically adds click based navigation to progress from one slide to another when you import a PPT slide deck into Captivate. But some of us prefer to provide something more fancy, with custom navigation buttons to move back or advance forward thru an imported PPT slide deck. A popular way to do this is to add text buttons or click boxes using Captivate.

Now if your PPT slide deck had custom animations that advanced based on a mouse click (or keyboard shortcut), this tends to interfere with the Captivate navigation buttons added to the same slide. If the ‘on success action’ for your Captivate button is set ‘Continue’, it doesn’t go to the next slide all the time.  If you set it to ‘go to the Next Slide’, it then skips the PPT animations on that slide.

This problem can be resolved using this workaround:

1.       When importing the PPT slide deck, choose -> ‘advance slides automatically’.

2.       Insert text buttons on the slides that require navigation. Label them appropriately as ‘Next’ or ‘Previous’.

3.       Set the ‘on success action’ for the ‘Previous’ button to ‘go to the previous slide’.

4.       Choose ‘execute advanced action’ as the on-success action for the ‘Next’ button.

5.       Create an advanced action with only “Continue” as the action in it and attach it to “Next” button as sown below

Click to add a custom action

Double-Click to add an action

Select Action 'Continue' from the dropdown

Select Action 'Continue' from the dropdown

This now ensures that all PPT animations are triggered one after the other based on the user click (or a chosen shortcut key-like ‘enter’). Also, like the original PPT flow, the user navigates to the next slide on clicking the ‘Next’ button after all the animations on the current slide are completed.

Posted by Shameer Ayyappan6:12 PM Permalink
September 28, 2010

Recovering the project

Sometimes Captivate 5 fails to open a project file (.cptx). This might have happened due to some corrupt data structure. The preferred way to avoid data loss is to enable project backup in captivate through Preferences (Edit (on Windows)/Adobe Captivate (on Mac) > Preferences > Global > General Settings > Generate Project Backup).  This will create a .bak file for your project (from second save onwards), which will contain the previous saved state of the project.

However, you may try out the following steps to recover full data (up to the latest state of the project). If the data files in the project cache are intact, then this workaround should restore your full project.

1) Go to, download the “” and install the air app inside the zip (as mentioned in the blog).

2) Start the air app and select your “project cache location” using the “Browse” button (the default location is” My Documents\Adobe Captivate Cached Projects”). Now click the “Refresh” button. This will list all the project names for which the project cache folder is available.

3) Check if you can see your project (which is not opening in captivate) listed there. If yes, then double click on that row in the air app, this should display a dialog containing the “Cache Path” as shown in the image below.

4) Now go inside this “Cache Path” folder and inside the “db” sub-folder, check whether the following exist in it:
                a)            compressed_data (folder)
                b)            objects (folder, this should contain an objects.cpo file and its size must be > 0 KB
                c)            uncompressed_data (folder)
                d)            audio.cpad (file, size > 0 KB)
                e)            info.cpi (file, size > 0 KB)
                f)             text.cptd (file, size > 0 KB)
                g)            thumbnails.cpth (file, size > 0 KB)

If these folders and files are present, then select them and create a zip file. Now rename this .zip to .cptx.

Note that there may be other files/folders inside “db” (e.g. already_in_use.lock, backup_data, etc.). Don’t include them while creating the zip, just include the ones mentioned above

5) Open the .cptx file in Captivate 5.

Note: This workaround may not work always.

In some scenarios the newly created cptx (created in step 4 above) might have some unsaved changes also (e.g. when the project had some unsaved changes and Captivate crashed, you may see those unsaved changes in the cptx sometimes).

Posted by Rahul Sharma5:03 PM Permalink
September 3, 2010

New utility for deleting Adobe Captivate project cache folders

Project cache in Adobe Captivate 5 helps you save and open projects faster. When you create a project in Adobe Captivate 5, a corresponding project cache folder is automatically created. This folder is saved in the project cache root folder specified in the project Preferences.

For more information on project cache in Adobe Captivate 5, see

Over time, these cache folders may use up your system resources and you may want to delete the folders to optimize the resources. You can delete the folders using the ‘Clear Cache’ option in the project Preferences. However, this method can be time consuming if you want to delete multiple project cache folders simultaneously.

The new utility from Adobe, Clear Cache Application, lists all the Adobe Captivate 5 project cache folders on the system along with the corresponding project name, size, status of the project (opened or closed), date modified, and cache size. Using this information, you can decide which cache folders you want to delete and quickly delete multiple cache folders with a single click.

To install and use this utility, perform the following steps:

  1. Download and unzip the contents
  2. Double-click the file and follow the on-screen instructions to install the utility.
  3. After the installation, the Clear Cache Application opens and lists all the project cache folders in the default cache location.
    – To view the cache folders in a different location on your system, click Browse, and navigate to the location of the folder.
    – To delete a cache folder, select the check box that corresponds to the folder and click Clear. To delete all the folders, click Select All, and then click Clear. Please note that currently opened projects cannot be selected for deletion.
Posted by Vish10:37 AM Permalink
August 5, 2010

Audio-Video Sync in Captivate published movie

Audio makes your elearning content more engaging and useful to learners. You can add audio to your Adobe Captivate project either by recording yours or somebody else’s voice directly or by inserting a previously recorded audio file (.AVI, .WAV). When you add audio to a slide, it appears as a separate ‘element’ in the timeline. You can synchronize the audio with the slide by adjusting its timeline.

When you publish the project, Adobe Captivate embeds the audio within the output file. The embedded audio can be a single file or multiple files based on the timing and type of audio. Adobe Flash Player that plays the Adobe Captivate movie also plays the audio along with the movie.

Sometimes, you may notice a lag in the audio timing and that it is not synchronized perfectly with the movie. The audio that must ideally end with a slide spills over to the next slide. In this article, let’s examine why such issues occur and how they can be solved.

Why does this issue occur? Before understanding the reason for this issue, let’s first understand how Adobe Captivate publishes audio.

Whenever an audio starts and ends at the same time as that of the slides, Adobe Captivate ‘stitches’ up the audio objects on the contiguous slides into a single file when the project is published.

Suppose the audio on slide 1 runs till the end of the slide as shown below:

Audio spreads till end of slide

Audio spreads till end of slide

The audio on the next slide, slide 2 starts right from the beginning of the slide as shown below:

Audio begins at start of slide

Audio begins at start of slide

In such a case, the audio files on both the slides are ‘stitched’ and published as a single audio file. Similarly, if all the slides contain audio that start at the same time as that of the slides and spread till the end of slide, Adobe Captivate creates a single audio file in the published output.

Note: If the audio on the contiguous slides are of different types (mono and stereo), Adobe Captivate generates separate audio files for each of the types even if the audio starts and ends at the same time as that of the slides.

Adobe Captivate is designed to do so to logically stitch up users’ narrations that are done during or post-recording of a screen or application. A single audio file helps to keep the continuity in the narration intact.

Adobe Flash Player plays the Captivate published audio and stops only when the specified duration elapses or when you intervene and stop it. Therefore, with a single audio file in an Adobe Captivate movie, the audio and video run parallelly at their own pace resulting in synchronization issues.

Is there a workaround? Yes, a very easy one. Tweak the audio timing in such a way that Adobe Captivate generates and embeds multiple audio files in the output. To do so, extend the duration of the slide a little more than that of the audio. For example, if the current slide and audio duration is 4 seconds, extend the slide duration by another 0.3 seconds, and retain the audio duration at 4 seconds.

The following illustration shows the difference between the audio and the slide duration:

Slide time longer than audio

Slide time longer than audio

Now, Adobe Flash player can control the beginning of each audio file at the specified time in the movie.

Posted by Mukul Vinay Lele5:21 PM Permalink
July 29, 2010

Suggestions for optimal use of the Text to speech engine

Captivate 4 introduced text to speech (TTS) technology in Rapid eLearning authoring. Given the adoption and feedback, in Captivate 5 we’ve introduced more voices. Tweaking these voices seem to be one of the most discussed topics on our forums. There were a couple of blog posts last year on tweaking the Captivate 4 voices (VTML tags, User dictionary). These continue to be applicable in Captivate 5 for the NeoSpeech voices. Our other partner, Loquendo, also offers the ability to insert commands in the input text to modify the way words are pronounced. In the next week, we will have a few posts detailing this. But prior to that, here are some best practices to follow when using text-to-speech:

The TTS process exploits only a subset of the complex knowledge base on which a human reader implicitly relies. While it can access grammatical and phonetic knowledge, the artificial system does not come to a true comprehension of the text, lacking the necessary semantic and pragmatic skills. This is why the system cannot deal with ambiguous or misspelled text, nor give different emotional colors to its voices according to text semantics. The system tries to pronounce exactly what is written, applying the standard orthographic conventions for interpreting characters, symbols, numbers, word sentence delimiters and punctuation. The cues to a proper intonation are mainly punctuation marks and syntactic relationships between words.

This means that the best synthesis results will be obtained with well-formed sentences, correct and standard orthography, unambiguous contexts and rich and appropriate punctuation. If you are able to prepare or select in advance the texts that will be fed into the TTS system, then the main rule to follow is: “Write texts according to the standard orthographic and grammatical rules of the language”

Loquendo suggests that you keep to the following simple guidelines:

  • Spell words carefully (using the correct character set for the language)
  • Use capital letters when grammatically appropriate and apply standard conventions for representing numbers and abbreviations
  • Separate words according to the standard orthographic conventions (insert blanks between words and after punctuation marks, when appropriate)
  • Avoid ambiguities
  • Write short sentences with correct syntactic structure
  • Insert punctuation marks frequently and carefully
Posted by Shameer Ayyappan5:22 PM Permalink
July 27, 2010

Balancing image quality and SWF output size in CP 5 – 1

Some captions and parts of images might have a dark background when published in CP5 with slide quality set as JPEG. The same project seems to work fine when published with CP4 with the same setting. This is because the mechanism to publish images has changed significantly from CP4 to CP5. In this two part blog series we look at information that you can use in Adobe Captivate 5 to parallel decide the quality of an image and the SWF file size and bring forth the differences between the publishing of images in CP 4 and CP 5.

Size of SWF output files is an important consideration for many content developers as it takes longer time for end users to download larger files. Many factors, such as, recording area, colors in the application that is recorded, FMRs, and background noise contribute to a large output file.

Images are one of the factors that impact the size of a project to a large extent – the higher the quality or the resolution of the image, the larger is the size of the project. Most images appear clearly in the output with low resolution; however, in some cases, your projects may warrant high resolution images. Keeping the file size reasonably low with high resolution images can be quite a challenging task.

Note: General tips to tweak the other factors that affect the file size are at

Adobe Captivate 5 lets you choose the level of quality for an image, based on the number of colors and transparency levels you need in the output. These settings can be specified at the slide-level, which makes it convenient for you to have different resolution settings for different images in the project. For example, you may choose to publish the images on the introductory slides with low resolution and those on the core slides with a higher resolution. The different quality levels you can choose for a project are

Low 8 bit – Publishes the images with the smallest size possible. When an image is published as low quality, Captivate tries to determine the optimal 256 colors with which to display a bitmap. This bitmap may contain more than 256 colors.This option works well for most images and for all the screen recorded content, but can fail if the image contains too many colors or many colors with different transparencies. This is usually the case with high fidelity PNGs or imported Photoshop files. JPEG images are still published as JPEG; their compression is controlled by the JPEG quality percentage set in the SWF size and quality preferences.

High 24 bit – Publishes images as bit bitmap images with the highest possible fidelity and no loss of quality. Selecting ‘high’ for all slides results in a large SWF output file. JPEG images are still published as JPEG and their compression is controlled by the JPEG quality percentage set in the SWF size and quality preferences.

Optimized – Publishes all images including JPEG images as high quality bitmap images. This option is similar to ‘high’ . This can drastically increase the file size.

JPEG – JPEG is the jpeg-equivalent of the ‘optimized’ option. This option publishes all images including non-JPEG images as JPEG images. Note that JPEG does not support transparency and transparent images such as PNG images do not appear clearly if published with this option.

In part 2 we will look at the changes from CP4 to CP5 in the way we publish images and how this is causing the dark backgrounds around captions

Posted by gokul3:28 PM Permalink
July 22, 2010

CP5 “Project Cache”: Behind the scenes

It is very common to have many assets or resources, for example, audios, videos, SWFs, and images in Captivate projects. While such resources enhance your projects and make them effective, they also introduce more disk I/O. Because of this additional disk I/O, the performance of Captivate may get affected and even simple operations like opening and saving projects may take longer time.

‘Project Cache’ in Adobe Captivate 5 is an attempt to address this performance issue by reducing the disk I/O to a large extent.

A project cache contains uncompressed forms of assets (bitmaps, audio, etc) used in the project and a few other files. The Cp projects or the CPTX files contain an internal reference to their unique cache folders.

Captivate needs to uncompress data while opening the projects or during editing of data. Whenever you try to open the project, Captivate locates the Project Cache folder and checks its consistency with the assets and files in the CPTX file. If the contents are the same as they were when the project was last saved, Captivate does not extract and uncompress data from the CPTX file. This way, the project is opened faster with the ‘readily available’ latest assets in the Project Cache, thus saving time and enhancing performance.

As soon as a project is created in Cp, a corresponding ‘project cache’ folder also gets created automatically in the ‘Adobe Captivate Cached Projects’ folder (root cache folder). This project cache folder is temporary until you save the project; if you close the project without saving, the cache folder is deleted and will not be available for future use. If the project is saved, then the project cache folder becomes available permanently for the project (until you choose to clear the cache or delete the folder).

You can change the default root cache folder, where the individual project cache folders must be created, using the Preferences dialog box (Edit (Windows)/Adobe Captivate (Mac) > Preferences > Global > General Settings > Project Cache). Because, the folder gets populated rapidly with considerable amount of data (roughly around 200 MB for a 100 slide recording (640x 480) project), it is recommended that you put this folder on a drive that has lot of disk space.

What happens if the ‘Cp Project’ is renamed?

The Cp project continues to use its Project Cache folder. This is because, the first time the project was saved, it was linked internally to the cache folder and this linking does not change when the project is renamed.

Now, consider this scenario: A project “P” is created on “computer A” and is modified on “computer B” and renamed to “P1”. The project is then brought back to “computer A”. Will the cache be re-used?

No, in this case, project P1 on Computer A does not use the previously created cache. When you open and save P1 on Computer A, a new cache folder gets created. However, if you open project P on Computer A, the cache created previously is used.

What happens if the Cp project is copied?

The file — the original or the copy — that gets opened first uses the existing cache folder. When the other file opens, a new cache folder is created (and is saved when the project is saved).

What happens if the root cache folder is renamed?

The root cache folder that you mention in the Preferences is the folder within which unique project cache folders for every Cp project are created. So, even if you rename the root cache folder, the internal link between the project and its cache remains intact. Hence, when you open the project, it continues to use its unique cache folder.

However, when you save the project, Cp checks if the root cache folder specified in Preferences exists on the system. If a folder with the specified name does not exist, a new root cache folder is created (with the specified name), and then the project cache folder is saved within that folder.

What happens if the Project Cache folder is deleted?

Deleting the “Adobe Captivate Cached Projects” is safe as long as Captivate is not running. While opening a project, if Captivate does not find a corresponding Cache folder, it will create a new one.

If you want to free up some disk space while Captivate is running, you can use the Clear Cache button in Preferences (Edit (Windows)/Adobe Captivate (Mac) > Preferences > Global > General Settings). When you do so, only those sub folders in the root cache folder that are not being used by any running Captivate instance presently get deleted.

Posted by Rahul Sharma6:50 PM Permalink
May 26, 2010

Announcing new Text-to-speech voices in Captivate 5

Take a moment and think about the eLearning content that was generated last year-
– honestly, did you not create more courses with audio narration last year? My customer interactions definitely indicate that this is the case. And the single biggest reason is Captivate 4 voices. The NeoSpeech text-to-speech (TTS) feature really touched a chord.

Many Captivate customers use TTS as the voice in the final published course. These folks have figured out how to use the dictionary to customize the NeoSpeech voices, and to use VTML tags to add more character to the voices. And many others have figured out that adding the TTS voice to the initial drafts of the course, helps in painting a complete picture during the review cycles, and also in editing and timing of the course.

Now with Captivate 5, text-to-speech goes multi-lingual! We’ve now added a new partner- Loquendo. Loquendo came highly recommended from our European customers, and after having tested it in our labs, I would agree wholeheartedly. Loquendo’s voices are expressive, clear, natural and fluent; and would be a great complement to the current set we have. Captivate 5 will offer 3 new voices from Loquendo:
Stefan (German), Juliette (French), and Simon (British English). You can check them out today on the Loquendo website.


Posted by Shameer Ayyappan11:05 AM Permalink
May 8, 2010

Now videos can be part of all elearning content!

One of my favorite features this time is the new Video import and synch capability in Captivate. This adds a new paradigm in content authoring. Now you can add video content to your elearning just as easily as you were adding audio previously.

This would be especially useful for talking head videos, that are describing or anchoring the content on the slide. Previously you would have needed a professional video editing tool to synch the Captivate movie and the talking head video.

In a workflow that mimics the ‘audio editing with slide preview’ workflow, now in Captivate 5 you can import any video, and synch the Captivate slides or objects on a slide to be in step with the video. Captivate also bundles the Adobe Media Encoder, allowing you to import video in any popular format, and the same is converted into FLV and placed on your slides.

Worried about published file size? Captivate 5 gives you the option to either embed the video in the project, or to stream it from an external Flash streaming server of your choice. While rendering over low bandwidth connections, Cp has the smarts to ensure that the Cp project and the FLV stay in synch.

A good example of content that leverages the video synch feature can be seen on the Captivate home page. Scroll down to the ‘what you can do’ section and click on ‘Compliance Training’.


Posted by Shameer Ayyappan10:08 AM Permalink
September 14, 2009

Widgets to streamline your quiz worflow

Usecase: Say you need to administer a quiz, where the learner has to answer all the questions in the quiz in sequence (he is not provided the option to skip). Also, at the end of the quiz, he should be provided an option to review the quiz.

To achieve this, you would go to project>skin editor and uncheck ‘show playback control’. But the user is still presented with the ‘skip’ button during the Quiz. Now, if you decide to uncheck the ‘show skip button’, the user will no longer have any means to navigate during review. Also, during review, he is needlessly shown the ‘clear’ and ‘submit’ buttons, adding to the clutter.

For the best experience, you should be able to hide the ‘skip’ button during Quiz presentation, and hide the ‘submit’ and ‘clear’ buttons during review. Now  Vikram has created a couple of Captivate widgets that will help you achieve this.

To use this, copy them to your widgets folder (program files, adobe, adobe captivate, gallery, widgets);  insert the widgets on the first question slide or the first slide of the project and in options set it to display for the rest of project.

Under edit> preferences>quiz>settings: uncheck ‘allow backward movement’. And that’s it- you don’t have to make any changes in the question slide options (leave the clear and skip button checked).

Do remember that these are AS3 widgets and should be used in AS3 projects (go to edit> preferences>project>publish settings>select AS3).

Widget: Hide Skip

Widget: Hide Submit and Clear


Posted by Shameer Ayyappan1:17 PM Permalink
September 12, 2009

get the file size you want …

File size could be an important consideration in creating eLearning contents especially in cases when it has to be put on websites or blogs. I was going through few discussions on web about file sizes best practices in Adobe Captivate. There are many things which you could do to reduce the file size. Most of them revolves around the quality of the assets inside the courses. The higher the quality – higher the file size.

If trying out the best practices is too cumbersome for you here is something from under the hood –

Go to “Publish” dialog.

Click on the hyperlink. It will be “custom” by default. You will get following dialog –

Play with the file size slider to get the result you want. This can also be used to create different size/quality content for different audiences. For web it could be of low size – low quality. For others cases it could be high quality – more size.

Posted by Rajeev Kumar1:33 AM Permalink
  • Loading
  • Categories

  • Archives

  • Authors

  • Recent Comments

    • Luis Miguel Devloper: Thank you very much for your contribution to the community
    • Tom Hathaway: Solved my own problem. I had to create an account with eLearning brothers instead of trying to sign in...
    • Tom Hathaway: I love the new asset function. However, when I try to log in with may Adobe ID, I receive the message,...
    • Dr. Pooja Jaisingh: Yes Brent, you can open and save your existing Captivate 8 project to Captivate 9. But once saved...
    • Megan: I’m having the same issue… How did you add the “On Enter” advanced action?
  • Captivate & eLearning Videos

    Subscribe to Adobe eLearning on YouTube.

    Check out the latest eLearning Videos on AdobeTV