1 person found this helpful
Ask your colleague what version of ActionScript they published the SWF to. AS3 or AS2.
The AS version must match the one in your Captivate movie.
So... it seems my colleague had animated within the movie clip timeline and not the main timeline. Apparently Captivate struggles with that. So it's now animated within the main timeline and all is good.
One puzzling thing (not a major issue as I've done a work around) - the SWF is built to run for exactly 4 seconds in duration. However, when I set the Captivate length to match that, the SWF would stop short of it's full length to what would be about 3/4 of the full animation (even though 4 seconds had elapsed). There's no transition on the SWF (or anywhere on the CP slide) and it starts at zero on the CP timeline (which was also set to 4 seconds duration) - therefore one might logically assume the SWF should run it's full length and stop at 4 seconds right? Well no, the only way I could get the 4 second clip to play in full was to actually extend the CP timeline to 5.5 seconds. Only at 5.5 seconds - and nothing less - will the clip play perfectly to it's full length. Yet another Captivate quirk?
I've yet to give Captivate 5 a proper workout, but I certainly hope Adobe is watching all these instances of "quirks" throughout this forum and is proactively fixing them.
Your mismatched timing might be due to the frame rate of the Flash SWF not matching the frame rate of the Captivate movie.
Check with your Flash developer again to find out what the frame rate was (e.g. 30 frames per second). Get him to match it to the Captivate project.
The issue with Flash animations needing to be on the main timeline has been documented before in these forums. It wasn't an issue in Cp4 but has become so in Cp5 because the new architecture actually loads all the animations at the beginning of the movie. This means that by the time you reach the slide where you want the animation to play, it's already played long before. This only affects SWF animation that have buried the animation inside a symbol, which is what Flash developers often do to make it all easier to resize and reposition as needed. When the animation is happening one level down from the main timeline, you can trigger this animation to work properly in Captivate 5 by using some ActionScript in the Flash animation's main timeline. Here's how:
- Create your animation as a symbol on a single keyframe so that the animation happens on the level one level down from the main timeline.
- Give the animation symbol an instance name (e.g. Fred).
- Add a new layer to the main timeline for ActionScript. You're only going to need two frames on the main timeline with keyframes on each one.
- Put a stop(); action on the second frame so that it stops the main timeline.
- On the first keyframe put this code or similar: Fred.gotoAndPlay(1);
What happens here is that when the Captivate SWF loads it will load your animation and start playing it but it will be stopped at the second frame of the main timeline. When it gets to the slide where you want it to play, it will begin playing again, hit the first frame and then the AS code there will tell the Fred animation to play from its first frame. Hopefully there will be a stop action on its own timeline to terminate it as well.
I've had to use this trick several times when trying to use the Right_Mark and Wrong_Mark tick and cross SWF animations that come with Captivate 5. They've obviously not been updated to work properly since the change from Cp4.
Hope this helps.
Rod - Thanks for all the detailed info. I'm sure it will come in handy in this forum.
Code work arounds aside - I think the issue still remains firmly in the "Another Captivate Quirk" basket. Both the Captivate and Flash frame rates are set to 30fps and yet the timing discrepancy remains. My work-around which increases the Cp timeline to 5.5 seconds (for the 4 sec SWF to play fully) seems to be the quickest and most robust solution I've tried.
And for some more quirkiness - on my working version, my Cp project is set to AS2 while the imported SWF is set to AS3 (only one piece of 'stop' code in it). Yet, this still works with the Cp timeline adjustment. Before you all go "aha, that's the problem..." it's not. When I change the Cp to AS3 and re-import the SWF (AS3), and reset the Cp timeline to 4secs, the SWF stops short again on publish and slides that were behaving as expected suddenly become unstable. All too much bother when the simple increased Cp timeline and mismatched AS settings actually works.
As paying customers using commercial software from such a major industry heavyweight as Adobe we should have a reasonable expectation not to have to spend our time inventing work-arounds for things like this that should work by default. After all, they're both (Captivate and Flash) Adobe products. Captivate seems to be excessively buggy and I believe it will be overtaken by a competitor if Adobe don't rectify all these little quirks sooner rather than later. How about an "Export to Captivate" function within Flash? Could save a lot of headaches.
Hope this is useful.