Lab: Adobe Captivate:
Adobe Captivate-to-Flash ActionScript Communication

LegacyCaptivateLoader

Read the journal entry introducing the LegacyCaptivateLoader.

Files

Instructions

Copy the proxy.swf file to the same folder as your main SWF.

Import the LegacyCaptivateController class into your AS3 file.

import pipwerks.LegacyCaptivateLoader;

Create a new LegacyCaptivateLoader instance. The constructor takes two parameters: the ID of the SWF being embedded into the HTML, and the URL of the Captivate SWF. The ID parameter MUST be accurate, and cannot contain hyphens.

var captivate = new LegacyCaptivateLoader("playerAS3", "sample-captivate-movie.swf");

If your Captivate uses a skin (including a border), set the usesSkin property to true. This property defaults to false, so if you don't use a skin, you don't need to declare it. If your file contains a skin and you don't set usesSkin to true, the controls will not work.

captivate.usesSkin = true;

Since the LegacyCaptivateController is a sprite containing a Loader, you need to place the LegacyCaptivateLoader onto the stage using addChild(). This also means you can use ActionScript to position the LegacyCaptivateLoader wherever you like. (Note: The LegacyCaptivateLoader's size automatically expands and contracts to match the dimensions of the imported Captivate SWF.)

addChild(captivate);
captivate.y = 25;
captivate.x = 25;

Control the Captivate SWF by using control(), passing the name of the 'rdcmndXXX' variable you're interested in invoking:

captivate.control("rdcmndGotoFrame", 73);
captivate.control("rdcmndHidePlaybar");

Similarly, you can query the Captivate file using query(), passing the name of the 'rdcmndXXX' variable you're interested in receiving:

var currentframe:Number = captivate.query("rdinfoCurrentFrame");
var slidecount:Number = captivate.query("rdinfoSlideCount");

If you'd like to unload the current Captivate and load a new one, just use the following syntax:

captivate.unloadSWF();  
captivate.usesSkin = false; //set this if needed
captivate.loadSWF("myothercaptivate.swf");

To unload the proxy, simply call

captivate.unloadProxy();

 

Methods and Properties

Available methods and properties Parameters Type Returns
LegacyCaptivateLoader() SWFID:String, CaptivateURL:String constructor None
usesSkin none Property (boolean, write only). none
control() rdcommand:String, framenumber:Number (optional) Method none
query() rdcommand:String Method Number
unloadSWF() none Method none
loadSWF() CaptivateURL:String Method none
unloadProxy() none Method none