Have you ever had one of those ‘Let’s Meet the In-Laws’ dinners? Kinda awkward aren’t they? Often we fail to realize how stunningly varied the human race is until we share a meal with those soon to be related to us.
Think of the Captivate movie as a family. Not necessarily one you’re about to be forcibly related to, but one you have to deal with on a day to day basis.
The Captivate Movie family is made up of many members, each with their own role and peculiar quirks. Over the next couple of weeks, I’ll be introducing you to each member in turn. But first, let’s take a look at how this illustration works on a technical level.
Display Objects and their Relatives
In the world of Flash (and by extension Captivate), anything in the swf we can see is called a Display Object. However, just because you have a Display Object doesn’t mean that you can see it. For a Display Object to be seen, it must be added to the Display List (think of it like marrying into the family).
Don’t let the word ‘list’ fool you into thinking it’s just a scrap of paper with a few Display Objects scribbled over it. Oh no, the Display List is structured man! Right at the top of the Display List is a root Display Object (known as the Main Timeline). All other Display Objects must descend as ‘children’ from the Main Timeline.
These Display Objects can have children of their own. In that case, the top Display Object becomes the ‘parent’ of the ‘child’ Display Object.
So by that logic, the Main Timeline is parent to all Display Object.
Now if we did something to a parent, such as change its location, then this would affect the child too. If the parent were to be rendered pink, then the child would be also. If we added a blur filter to the parent, then the child would also be blurred.
Note though, that if the parent is not in some way a child of the Main Timeline, then the child isn’t considered as being part of the Display List either; and remember, if it’s not on the Display List, then it isn’t seen.![]()
Thus we end up with the great family tree which is Captivate.
Now let’s get to know the man at the top a bit better.
Old Man Timeline
Old Man Captivate Timeline has been around for donkeys years, but he hasn’t gone soft. No, he’s the main organizing force behind the entire Captivate Movie. If Captivate could be likened to the mob, he’d be the Godfather.
This is the guy who decides (from his mouldy brown corduroy recliner) when and which slides are shown. He also keeps a tight hold on the Captivate Variables (system or user). If you want to access them, you’re going to have to go through him first.
The Captivate TOC and Playbar are direct children of Old Man Timeline. That is unless the movie is inside an aggregated project, which is a WHOLE other type of family.
Also held closely to his chest is the movieXML. This is data that is written by Captivate (the software program) and incorporated into the published movie. It contains information about general settings for the movie and each of its slides. It also contains data for each object on every slide. If you want to have some fun, I suggest you pick up your nearest copy of De Monster Debugger and trace out the movieXML.
1 | MonsterDebugger.trace(this, cpVariables.movieXML); |
Oh, which reminds me. The Captivate Main Timeline is accessible in WidgetFactory through the cpVariables property. The property is called this (instead of captivateMainTimeline) because you’re most likely to access it to get hold of a Captivate Variable.
Now that we’ve met the head honcho, in the next post we’ll get acquainted with some of his kids: Slides.



I’m a longtime Captivate user but programming agnostic. Your website seems to have valuable resources but leaves me confused. Could you please tell me the beginning point following which I’d be able to use the code your share?
Hi Vilu,
It depends where you want to start off. The first thing you need to do is learn a little bit of ActionScript. There are many places on the internet for this, but I recommend sites like CartoonSmart or Lynda.com.
When you want to start learning the basics about building widgets, I’d suggest you start by watching this eSeminar: http://www.infosemantics.com.au/widgetking/2010/09/widget-basics-eseminar/
There’s a follow up seminar here: http://www.infosemantics.com.au/widgetking/2010/12/beyond-the-basics-widget-eseminar/
Then take a look at some of the posts here under the basics category: http://www.infosemantics.com.au/widgetking/category/basics/
Hopefully that should help you get started
i have been trying to access some FlashVars from within my widget to no avail. it seems several other people in other forums are having the same problem. i can see that root.loaderInfo.parameters exists via Monster Debugger, but that is about as far as I have got.
any ideas?
nevermind …
stage.loadInfo.parameters works
should have tried that first (!)