The native engine I built was able to import .fla and edit the actual shapes and forms but it had inherent structural differences keeping it from being 100% compatible. My native engine uses classify faces which works better when it knows the structure of how shapes got to where they were. When you import a flash file it loses context of the topology.

example of the limitations of classify faces
I decided to make a 2nd engine to handle .fla import I've been able to narrow down the key parts of the import pipeline are edgefills and contour tracing for rendering. I experimented with scanline rendering which might come in handy later.

Result of experimenting with scanline rendering interacting with new brush strokes.
Based on my research (two most helpful being Claus Wahlers and Mike Swanson's work) and my own hands on experimentation with JSFL, it's pretty clear Flash stores shapes as a flat list of edges, straight lines and quadratic curves.
Each edge carries references to the fill on its left side and the fill on its right side. There are no closed paths in the traditional vector graphics sense. To render a shape, it walks the edge list, groups edges by fill style, reverses any edges that were recorded on the 'wrong' side, chains them into closed contours, and then fills each contour with its assigned style.
This 'edge soup' representation is what makes Flash's merge drawing possible. When you paint a new stroke onto a shape, the editor can just toss more edges into the soup, split any edges that intersect existing ones, and reassign fills.
I'm at the point where I've figured out how to render the shapes in the correct order and I'm able move the shapes.

I'm currently working on getting same colored fills to merge the next step will be to get different colors to cut and divide fills and the final step will be applying these behaviors to the brush and selection tool properly.
-Bill
This exact post is also on Patreon I'm proud to say I've worked on this project every single day of 2026 nearly non stop besides sleeping,eating,and walking my dog. Only support the Patreon if you can afford to.