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 classpackage 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;
}
}
}