I don't have time to set up an in engine example right now, but here are the basics:
Create an amazing looking fly:
UV map it:
Then, take a copy of the mesh at each frame and combine them all to one mesh:
Position the UVs of the frames after eachother:
Create a mask that's mostly black. One line of white in it. This line is ((textureWidth/numberOfFrames)-paddingBetweenFrames) wide. As you can see above, I just made it sloppily, and it gives some issues.
Then just apply the texture as alpha, and scroll it:
You can see the tail of my fly disappearing because of my slightly too small mask.
And that's it.
General tips for this:
Put these uvs in a second uv set if you want to texture the fly as well.
Floor the uv scroll so it steps between frames instead of scrolling, or you might get a sliding line going across the frames.
Keep the polycount low, use crossplanes where possible. 100 vert fly*10 frames is 1000 verts.
Only animate what's needed. Leave the body static, give it a differentmaterial or whatever. So if you have a quad per wing, and animate them for 10 frames, you only get 40 tris and that ain't bad.
The mask texture only needs to be 1D (or whatever your engine can handle). 1 pixel high, and then the relationship I described above between black and white. I tend to make masks around 64x8 just so I don't get screwed by compression and so on.