the situation is that the main.swf attempts to load child.swf
on Child class
package { import flash.events.Event; import flash.display.Sprite; public class Child extends Sprite { public function Child() { initChild(); } public function initChild():void { stage.focus = this; } } }on Main class
package net.littleshell { import flash.display.Loader; import flash.display.Sprite; import flash.events.Event; import flash.net.URLRequest; public class Main extends Sprite { private var l:Loader public function Main() { init(); } public function loadSWF($url:String):void { var rq:URLRequest = new URLRequest($url); l.load(rq); } private function init():void { initLoader(); loadSWF("child.swf"); } private function initLoader():void { l = new Loader(); l.contentLoaderInfo.addEventListener(Event.COMPLETE, loader_complete); addChild(l); } private function loader_complete(e:Event):void { //blar blar blar } } }in such case, a #1009 error will be thrown in child.swf it is because child.swf references the stage object too soon.
to solve it, simply run your code when ADDED_TO_STAGE event was dispatched.
Modified Child class
package net.littleshell { import flash.events.Event; import flash.display.Sprite; public class Child extends Sprite { public function Child() { addEventListener(Event.ADDED_TO_STAGE, initChild); initChild(); } public function initChild(e:Event == null):void { removeEventListener(Event.ADDED_TO_STAGE, initChild) //its now safe to do anything stage.focus = this; } } }