Here’s the scenario:
Our creative team produces SWF animations in the Flash CS5 authoring tool that we (the engineers) load at runtime into a project built using the Flex SDK. Animations that don’t use the “3D rotation tool” work just fine.
Animations that use the 3D rotation tool give the following behavior:
- MovieClips that have 3D tweens applied using the 3D rotation tool show up in the top-left corner of the stage as if they had no transform at all (i.e. as if their Matrix3D was being ignored, and their Matrix was identity)
- MovieClips that have normal 2D tweens animate properly
- Alpha and other non-affine properties tween properly
Both 3D and non-3D animations play fine when loaded by themselves in a browser tab or the standalone flash player. 3D is only broken when loaded into our code generated SWF.
So it seems that for MovieClips with 3D transformations applied in the CS5 authoring environment, those transformations aren’t being applied / respected when the SWF is loaded by our code SWF.
This is my first foray into 3D, so I’m not sure what could be causing this, but here’s what I’ve tested / checked / tried, all to no avail:
- I’ve ensured that actionscript 3 and Flash Player 10 / 10.1 is selected in the authoring environment.
- I’ve tried loading animations into code SWFs built using Flex 4.1, 4.5, and 4.6 at Flash player versions 10.0, 10.1, 10.2, and 11
- I’ve applied Matrix3D to the containers that load the SWF animations, both identity and rotated. I can see the rotated containers do work with 3D in perspective, so I know that my code SWF is 3D capable.
I’m hoping there’s some simple trick, some setup I’m missing. Thanks for your help!
I can’t post code, but it turns out it was an overly cautious subtlety in our loader code that had never caught us before:
We have a custom class that loads all images for us (including a few utilities and common functionality built in). On load complete, this code took the loader.content, added it as a child to itself, and — here’s the kicker — cleaned up the no-longer-necessary loader using close() and unloadAndStop().
I suppose it seemed rational to cleanup the loader in this way, and it has always worked until now (with static images, static SWFs, and SWF animations), but it caused the above issue upon loading 3D swfs (and it turns out this also caused odd URL not found errors on loading video SWFs).
Disabling the overly cautious Loader cleanup fixed my problem.