Heres how I arranged stuff in my games in AS2.
Here is an in-game event, and all the communication that took place:
Enemy is created via duplicateMovieClip> adds its name to the HitTest Array.
Player creates a projectile via duplicateMovieClip>
Player sets projectiles initial variables(start location, and direction), besides that, the projectile takes care of itself and it’s movement>
Each frame, the projectile hitTests for an impact with an enemy by spooling through the HitTest Array>
Impact, projectile lowers the life variable of the enemy it has impacted>
If the enemys life variable goes under 0, it removes itself from the hitTest array and sends a increment to the playerScore objects score variable.(Life was checked onEnterFrame, but I think a listener for change in the life variable is more efficient, right?)
Now, is this still the best way to do things in AS3?
One thing I’m not sure about in AS3 is the whole child thing. I assume that projectiles should be children of the player or enemy object, and the player and enemies should be children of the stage/root.