Preloading Images (I found a problem when using a firewall)

[FONT=Arial]Ok, I have found a pretty big issue with preloading Images into Flash Player 8. I am using ZoneAlarm Pro as my firewall. When I try to preload Images with Firefox the bytesTotal==bytesLoaded… In IE explorer 7,6,5.5 bytesTotal == 0 always. Now when I turn ZoneAlarm Pro off I get the correct values. I have thought of a workaround that would detect if there is a problem with bytes total and I can then display a loading message or a loop instead of the status. I also thought of some other ideas like accessing Images from Flash by accessing a PHP page and returning the actual bytes total from PHP. The only issue with this is it is an extra step and could slow things down alot. Has anyone else seen this issue? Does anyone have a workaround that is affective? Is there a better way to do this? Is this why people tend to not use progress indicators anymore for Jpegs? I thought it was cause the Internet is getting faster and faster and just an indication of loading is usually fine.

Note: I also tested this with PNG’s and I get the same results.
Swf files work fine even with ZoneAlarm on.

Also, if anyone has a website where they load jpegs and display progress for those jpegs then please send me a link so I can see if I have the same results on your site.

Main TimeLine code:
[FONT=Courier New]
[/FONT][/FONT][INDENT][FONT=Arial][FONT=Courier New]import imgtestclasses.*[/FONT][/FONT]
[FONT=Arial][FONT=Courier New]var loadIMG= new Preloading();[/FONT][/FONT]

[FONT=Arial][FONT=Courier New]loadIMG.testloadprocess(this);[/FONT][/FONT]
[FONT=Arial][FONT=Courier New]stop();[/FONT][/FONT]
[/INDENT][FONT=Arial]

Here is the class I created for testing this.

I call testloadprocess(this); from the main timeline.

[/FONT][INDENT][FONT=Courier New]import imgtestclasses.*;
class imgtestclasses.Preloading {
var image_mcl:MovieClipLoader;
var display:TextField;
function Preloading() {
//constructor does nothing Not really needed.
}

public function testloadprocess(parent:MovieClip) {
   
   //The next line accesses a class that returns a movieclip very simple
    var imgHolder = Holder.createHolder("imgHolder", parent, 1);

[/FONT][FONT=Courier New] createText(parent);
trace(imgHolder);
loadIMG(“roadhome.jpg”, imgHolder);
}

//creates the Text field for the progress display

private function createText(parent:MovieClip) {
    display = parent.createTextField("display", _parent.getNextHighestDepth(), 200, 400, 700, 100);
}

//I think this is obvious what it does…
public function loadIMG(url, mc) {
image_mcl = new MovieClipLoader();
image_mcl.addListener(this);
image_mcl.loadClip(url, mc);
}

//Nothing at this point
public function onLoadInit(target):Void {
}
public function onLoadStart(target) {
}

//load progress code.

public function onLoadProgress(target:MovieClip, loadedBytes:Number, totalBytes:Number):Void {
    var kbsL = Math.round(loadedBytes*0.0009765625);
    var kbsT = Math.round(totalBytes*0.0009765625);
    var perc = String(Math.round((kbsL/kbsT)*100));
    displayprogress(perc, kbsL, kbsT);
}

//displays the progress of the Movie I even added updateAfterEvent HAHA Grasping at //straws you know…

private function displayprogress(percentage, kbsL, kbsT) {
    display.text = "My bytes Loaded are: "+kbsL+"   & My bytes Total are: "+kbsT+"   & My percentage is: "+percentage;

    updateAfterEvent();
}

}
[/FONT][/INDENT][FONT=Arial]

[/FONT]