Why this works on flash professional’s debugger, but brings null on the compiled SWF?
var firstParameter:SomeObject = new SomeObject();
someLoader = new Loader();
someLoader.contentLoaderInfo.addEventListener(
Event.COMPLETE
, function(evt) {
onLoaded(evt, firstParameter);
}
, false
);
function onLoaded (evt:Event, param:SomeObject):void {
mcOnSceneForTracing.text = param; // this is used for SWF debugging
}
For the record:
- To make it work without any issues this can be “solved” by creating a separate scope. However, here I’m wondering why, then, this example even works on the debugger at least.
- And, please, if you have a better way other than using two anonymous functions to pass parameters, variables, values, whatever through an Event, do tell! I’m not willing to extend the Event, tho. Too 2005.
mcOnSceneForTracingis what I’m using to “trace” outside the debugger. Suggestions are also accepted here for better (and simpler) ways to do it! I’ve heard Vizzy is good, but haven’t tried it yet.
My guess would be: When loading your resource from the debugger player, the operation finishes instantly, and thus
firstParameteris available when your anonymous listener function is called, but when running the swf elsewhere, the load operation takes longer, and then the reference to firstParameter is lost, since it is a local variable.