I’m having a fun little bug with the loadClip function of the MovieClipLoader class. I’ve passed it a valid MovieClip and a valid filename (verified by traces) and it still returns false. It never calls the listener object I created with a onLoadStart or onLoadError event. I’m still trying to figure out why it would return false, but I’m at a loss. It had worked before and I changed something, but I can’t remember what. I’ve looked it over a few times and I figure I might need a second eye to see what might be wrong here…
import mx.events.EventDispatcher;
import mx.utils.Delegate;
class MultiSWFManager_MiniLoader {
public var dispatchEvent:Function;
public var addEventListener:Function;
public var removeEventListener:Function;
private var _loader:MovieClipLoader;
private var _listener:Object;
private var _progressBar:MovieClip;
private var _mc_target:MovieClip;
private var _file:String;
private var _scale:Number;
private var _percent:Number;
function MultiSWFManager_MiniLoader(file:String, target:MovieClip) {
_loader = new MovieClipLoader();
_listener = new Object();
_file = new String(file);
_scale = new Number(1);
_percent = new Number(0);
_mc_target = target;
EventDispatcher.initialize(this);
}
public function beginLoad() {
if (_percent == 0) {
trace('Loading ' + this._file + ' into ' + this._mc_target);
_percent = 0.0001;
_listener.onLoadStart = function(mc:MovieClip) { trace(mc + " started..."); }// Delegate.create(this, onLoadStart);
_listener.onLoadError = Delegate.create(this, onLoadError);
_listener.onLoadProgress = Delegate.create(this, onLoadProgress);
_listener.onLoadComplete = Delegate.create(this, onLoadComplete);
_listener.onLoadInit = Delegate.create(this, onLoadInit);
_loader.addListener(this._listener);
trace(_loader.loadClip(_file, _mc_target));
_mc_target._visible = false;
}
}
private function onLoadStart(mc:MovieClip) {
trace(mc + " started...");
}
private function onLoadError(mc:MovieClip, errorCode:String, httpStatus:Number) {
trace(mc + " error: " + errorCode + " (" + httpStatus + ")");
}
private function onLoadProgress(mc:MovieClip, bytesLoaded:Number, bytesTotal:Number) {
_percent = (bytesLoaded / bytesTotal) * 100;
_progressBar._xscale = (_scale * _percent) * .98;
}
private function onLoadComplete(target_mc:MovieClip, httpStatus:Number) {
trace("Status: " + httpStatus);
}
private function onLoadInit(mc:MovieClip) {
trace(' Inited ' + this._file);
dispatchEvent ({type:"complete"});
mc._visible = false;
}
}
Traces:
Loading test1.swf into _level0.mc_container2
false
It never calls onLoadStart (I figured it might be a scope issue, so I placed the function inline. Otherwise, I created private functions for each event.)