This content has been marked as final. Show 7 replies
all embedded into the same index.html or a single swf embedded into index.html loading the others as needed?
Yes, can anyone answer why/how to compensate for browsers slowing the playback of Flash movies? Can you assume it's going to slow down a 30 fps movie at a certain rate then compensate in your development?
Not really no. It's usually our responsibilities as the developers to deal with this during testing. The browsers themselves aren't actually slowing down your movies in most cases. It's actually an issue of RAM. Playback from the local system is usually considerably faster for this reason. The flash player doesn't have the extra crap to deal with from the html etc.
Flash also can't do much for you in terms of the hardware/connection either. This all plays into it.
My suggestion is to play back your videos on multiple computers and multiple connections. During testing, I have 4-5 different setups I test on just inside the building... But I also have a tendency to test on different family and friends computers as well to make sure that I'm getting as big of a result pool as possible. Slow playback almost always turns out to be an issue of too much drawing/animation/symbols on a computer with less than desirable hardware.
But is there a way to preload a segment of the movie into Ram before playback, like a number/series of frames and all of the content on those frames? I use to working in Macromedia Director and you could preload like 1 to frame 300 before the movie starts playing. That is how you resolved the plack issues.
yes, the same way that preloaders work, you use _framesloaded and _totalframes in a movieclip. That way, you can wait until an entire section, or movieclip, or external SWF loaded into a movieclip, has loaded entirely before beginning playback. There are tons of examples of preloaders, take a look and try one out.
However, the processor speed of the end user's computer will affect playback speed. If the FPS is too high, and there is too much motion going on or too many tweens happening at the same time (ESPECIALLY color/transparency tweens), the computer WILL slow down playback of the movie, even if it is all loaded (via _framesloaded and _totalframes). The computer still has to process all of those changes that are happening, it's not like a video where all the frames are flattened into individual images.
What you need to do is find the lowest common denominator for your project - the slowest, oldest computer that your client will accept as needing to have the project run smoothly on, and optimize around that. This may mean that you can't go far above 12fps in some cases. It just all depends on HOW OLD/SLOW you need to get your project working on.
Thanks, helps much!
Yeah. The important thing to remember is that everything in Flash is vector based math. This means that every time a line, shape, image, whatever is moved, calculations need to be made by the Flash Player and those calculations require the processor.
Lets say it takes 10k of memory to move and fade out a 10px x 10px box from one side of the stage to the other. Now lets say you duplicate it 100 times and repeat that animation but rather than do them one at a time, you're doing that all at once or with a few milliseconds of offset. That's 1M of ram. Theoretical of course since it would actually take a lot more than that...
Now add menus, text with effects (so each letter is broken apart into a shape)... The amount of RAM required gets to be ridiculously large quite quickly. During testing, use the bandwidth profiler as well as a swf size report to see where your movie has the most stuff going on. The report can give you a byte-for-byte report of every frame of the movie. Use this to get suggestions on where you can simplify your animations. Any spikes in the byte report are trouble spots since they are the most likely to bog down the user's processor.