How can I speed up the animation of complex objects on smartphones?
- June 19, 2020
- 3 replies
- 1887 views
I made some animations in Adobe Animate. See attached Animation.gif.
When I publish, and play them in a browser on my desktop, I average about 47 FPS. When I play them on a smartphone, I get about 20 FPS. In both cases, there's visible lag and jerkiness. The project is set for 60 FPS.
60 FPS is just a test. I don't intend for the final project to run at 60FPS, but even if I drop it down to a more reasonable 30FPS, both the desktop and smartphone still have lag and jerkiness.
My guess is that the problem is caused by the fact that these animations are made out of complex objects, with a large number of lines, and the computers trying to run the animations are having a hard time calculating the location for and drawing each tiny line.
Digging around online, I can see that Adobe Animate supports caching vector images as raster images at deploy time. Unfortunately, when I do that, it doesn't appear to help performance any. I think this is because what I end up with is something like the attached main_atlas_2.png, where instead of caching large objects, it caches every single tiny line.
Naturally, I have some questions:
- Am I even on the right track when it comes to speeding up animations? Is caching objects as raster images the best way to speed up an animation on a smartphone, and make it play smoothly? Is it really that difficult for a computer to display a large number of vector lines?
- Is it possible for me to tell Animate not to cache every single tiny line, but rather to cache larger objects? Is this likely to help in any significant way?
I know that if you look at the properties of a movie clip, it has a "Render: Cache as Bitmap" option. I would assume that my solution would be to select groups of objects, make them into movie clips, and mark those movie clips as "Cache as Bitmap", but as far as I can tell, this has no effect on the main_atlas_2 texture map that gets generated.
What am I doing wrong? What should I be doing?
Thanks
