This will not be a popular answer, I know ... Using static properties to expose instances is a really bad idea. The Singleton anti-pattern is very popular, but should not be, it leads to incorrect practice and unnecessarily binds classes to each other.
You need to ask yourself if you really need to refer to the main class in other classes? AS3 has an event system that can provide you with all the clutch you need. If the display object should interact with an instance of the main class, this can be done by sending events through the display list.
The problem of dependency management is best handled by the dependency injection infrastructure (many of which have some centralized messaging system that far surpasses the list of events behind the list). If you feel that any of the popular ones (PureMVC, RobotLegs, etc.) is redundant, you can easily create (simple and limited) yourself.
There are many tools and templates that never have to rely on singletones or static instance applicators because they make your life miserable and your code fragile, inflexible, unstable, unreliable and buggy.
source share