I have several flash movies on a site. They all loop through an animation which lasts for approximately 15 seconds (but this is not set in stone). They all begin to play at the same time and are in sync.
However, when I resize the browser window, or scroll the page, if a flash player instance is not in the viewport, it stops playing. When it returns to the viewport, it resumes and subsequently is out of sync with the other flash player instances.
I am under the impression this is a flash player optimisation. Is there anyway of disabling this behaviour, possibly through JS / AS3? It appears to happen in Firefox and Chrome on Windows.
UPDATE
Just to clarify. I have methodologies in place using local connection and ExternalInterface to sync the ads. What I am looking for is a method to disable the “optimisation” of FlashPlayer which results in the frame rate being drastically reduced.
You can’t disable this feature. It’s put in place to lower the memory and CPU use when the flash application isn’t visible.
What is available for you though is something called the Throttle API. This is a dedicated API created to allow creators of Flash applications the ability to be notified exactly when their application is going to be slowed down/throttled.
Here’s an example.
Now you can figure out a way that works best for you but my suggestion is to store the current time that has passed whenever being throttled or paused via:
Then calculate how much time has passed once your application has resumed using:
Then do what you like with this information.
Hopefully this has helped, should offer you a greater degree of control now that you’re familiar with the Throttle API. For more information on it, check it out in the documentation here:
ThrottleEvent