2011-04-15 51 views
0

我已经找到了这样的代码,它可以用于在我以前做过的旧AS2项目中预加载单个'Q1.swf'。我如何调整它以预先加载5个SWF?我可以将它们全部加载到相同的目标MC,还是必须将它们加载到单独的级别或不同的目标上。 由于预算不允许,我不想将项目更改为AS3。当从CD和在线查看项目时,这项工作也会如何?用AS2预加载外部swfs

stop(); 
preloader._visible = false; 
preloader.bar._xscale = 0; 
var mclListener:Object = new Object(); 
mclListener.onLoadInit = function(container:MovieClip) { 
trace('initialized'); 
}; 
mclListener.onLoadStart = function(container:MovieClip) { 
preloader._visible = true; 
trace('started'); 
}; 
mclListener.onLoadProgress = function(mc, w, t) { 
trace('progress: '+w+", "+t); 
var w = container.getBytesLoaded(); 
var t = container.getBytesTotal(); 
preloader.percent = Math.round(w/t*100)+"%"; 
preloader.bar._xscale = Math.round(w/t*100); 
}; 
mclListener.onLoadComplete = function(container:MovieClip) { 
trace("loaded"); 
preloader._visible = false; 
_root.play(); 
}; 
mclListener.onLoadError = function(container:MovieClip, errorCode:String) { 
preloader._visible = false; 
trace('not loaded'); 
}; 
var container1:MovieClipLoader = new MovieClipLoader(); 
container1.addListener(mclListener); 
container1.loadClip("Q1.swf", container); 

回答

0

我做这样的事情:

function loadSection() { 
    ext_mc.loadMovie("01.swf"); 
    bg_mc.loadMovie("bg.swf"); 

    _root.createEmptyMovieClip("ctrl_mc",_root.getNextHighestDepth()); 
    _root.ctrl_mc.onEnterFrame = function() { 
     vbt = ext_mc.getBytesTotal() + bg_mc.getBytesTotal() 
     vbl = ext_mc.getBytesLoaded() + bg_mc.getBytesLoaded() 
     if (vbl >= vbt && vbl > 200) { 

      delete _root.ctrl_mc.onEnterFrame;    
      trace("do something") 
     } 
    }; 
}