Use the arguments (bytesLoaded, bytesTotal) passed to the onLoadProgress event
rather than getting them form the movieclip.
Check the docs for MovieClipLoader.onLoadProgress()
And there's a whole bunch of other things that you should look into.
Nested functions --> avoid them.
No need for a seperate listener object --> MovieClipLoader.addListener(this);
Don't use onLoadComplete, use onLoadInit instead.
// messy
function loadImagesToHolders() {
listener.onLoadComplete = function() {
clientes.onEnterFrame = function() {
}
}
}
// pretty ;-)
import mx.utils.Delegate;
var mcl:MovieClipLoader;
function loadImagesToHolders():Void {
}
function clientesEnterFrameHandler():Void {
}
function onLoadProgress(mc:MovieClip, l:Number, t:Number):Void {
trace("loaded: "+l);
trace("total: "+t);
}
function onLoadInit(mc:MovieClip):Void {
// not sure you really should be doing this each time
// an image has loaded.. no idea where clientes is located
clientes.onEnterFrame = Delegate.create(this, clientesEnterframeHandler);
}
mcl = new MovieClipLoader();
mcl.addListener(this);
regards,
Muzak
----- Original Message -----
From: "Helios Pregioni Bayma" <[EMAIL PROTECTED]>
To: <[email protected]>
Sent: Wednesday, June 13, 2007 12:20 AM
Subject: [Flashcoders] getBytes...() works only local,not online (except when
imgs are cached)
Hi list,
I am facing a problem I cant solve, and since now, thanks a lot for any
help.
I am loading images and preloading them...ok, nothing new.
For this, I am using loadClip and onLoadProgress to update their bytesLoaded
and bytesTotal, so I can preload them perfectly.
The amount of images to load, vary according to the clicked item.
When I try this local, works perfectly, the bytes amount are updated as it
should, but when I try it online,
it just doesnt work.
When I load images and they are not cached:
getBytesLoaded returns: undefined
getBytesTotal returns: undefined
But when they finish to load, and when they start to load when already
cached:
getBytesLoaded returns: correct size
getBytesTotal returns: always 0
Here is the code:
var mcl:MovieClipLoader = new MovieClipLoader();
var listener:Object = new Object();
mcl.addListener(listener);
var totalLoaded = 0;
var loaderTime = 0;
function loadImagesToHolders() {
var totalToLoad = txtImagensServicosXML[dataID1][dataID2].length;
//totalImgsToLoad doubles cause it loads both mini and big images
var totalImgsToLoad = totalToLoad*2;
totalLoaded = 0;
listener.onLoadComplete = function(mc:MovieClip):Void {
totalLoaded++;
var id1 = mc._name.slice(5, 6);
var id2 = mc._name.slice(7, 8);
if (totalLoaded == totalImgsToLoad) {
clientes.onEnterFrame = function() {
if (barFullandLoaded == true) {
this.onEnterFrame = null;
barFullandLoaded = false;
if (processStopped == false) {
loader.bar.gotoAndStop(1);
clientesLoaded();
}
}
};
}
};
//waste of code, temp used cause of old problems
mcTotalLoaded = null;
mcTotalSize = null;
totalL = null;
totalS = null;
//end of waste of code
var mcTotalLoaded:Array = new Array(totalToLoad);
var mcTotalSize:Array = new Array(totalToLoad);
var thePercent = 0;
var barFullandLoaded = false;
listener.onLoadProgress = function(mc:MovieClip):Void {
var mcID = mc._name.slice(-1);
mcTotalLoaded[mcID] = mc.getBytesLoaded ();
mcTotalSize[mcID] = mc.getBytesTotal();
};
loaderTimer = getTimer();
loader.onEnterFrame = function() {
totalL = 0;
totalS = 0;
for (var i:Number = 0; i<totalToLoad; i++) {
totalL += mcTotalLoaded[i];
totalS += mcTotalSize[i];
}
thePercent = Math.ceil((totalL/totalS)*100);
if (thePercent>(loader.bar._currentframe*2) &&
loader.bar._currentframe<50) {
loader.bar.play();
} else {
loader.bar.stop();
}
if (loader._visible == true) {
if (thePercent>=100 && loader.bar._currentframe == 50) {
barFullandLoaded = true;
loader.onEnterFrame = null;
}
} else {
if (thePercent>=100 && getTimer()>=Number(loaderTimer+1000)) {
barFullandLoaded = true;
loader.onEnterFrame = null;
}
}
if (getTimer()>=Number(loaderTimer+2000) &&
loader.bar._currentframe<=45)
{
loader._visible = true;
}
};
for (var i:Number = 0; i<totalToLoad; i++) {
clientes.createEmptyMovieClip("img_p"+dataID1+"_"+dataID2+"_"+i,
clientes.getNextHighestDepth());
clientes["img_p"+dataID1+"_"+dataID2+"_"+i]._x = 2000;
clientes.createEmptyMovieClip("img_g"+dataID1+"_"+dataID2+"_"+i,
clientes.getNextHighestDepth());
clientes["img_g"+dataID1+"_"+dataID2+"_"+i]._x = 2000;
mcl.loadClip(txtImagensServicosXML[dataID1][dataID2][i][0],clientes["img_p"+dataID1+"_"+dataID2+"_"+i]);
mcl.loadClip
(txtImagensServicosXML[dataID1][dataID2][i][1],clientes["img_g"+dataID1+"_"+dataID2+"_"+i]);
}
}
Thanks a lot for any help!
Helios
_______________________________________________
_______________________________________________
[email protected]
To change your subscription options or search the archive:
http://chattyfig.figleaf.com/mailman/listinfo/flashcoders
Brought to you by Fig Leaf Software
Premier Authorized Adobe Consulting and Training
http://www.figleaf.com
http://training.figleaf.com