Alternativbild mit MovieClipLoader

NeMeSiS1987

Erfahrenes Mitglied
Hallo,
ich möchte einige Bilder in ein Frame laden. Das geschieht mit einem MovieClipLoader. Ich hab auch schon einen Listener eingebaut und onLoadError klappt auch:
Code:
this.picloader= new MovieClipLoader();
this.listener = new Object();
this.createEmptyMovieClip("pic1",i);
this.picloader.addListener(listener);
picloader.loadClip(pfad/bild.jpg,pic1);
listener.onLoadError = function() {
			trace("error");			
		}

Anstatt der Ausgabe möchte ich aber, dass vom gleichen Loader in den gleichen MC eine andere Datei geladen wird, also ein dummy.
Code:
picloader.loadClip(pfad/dummy.jpg,pic1);
So in der Art. Allerdings geht das nicht. Muss ich vielleicht davor sowas ähnliches einfügen:
Code:
picloader.close;
picloader= new MovieClipLoader();
Und danach die neue loadClip?

Danke für eure Hilfe!
 
Hi,

dies:
Code:
picloader.loadClip(pfad/dummy.jpg,pic1);
wird immer zu einem Fehler führen, da der Pfad eine Zeichenkette sein muss (und damit in Anführungszeichen stehen).

Generell würde ich für das Dummy-Bild einen anderen MovieClipLoader (ohne onLoadError-Methode) verwenden, denn sonst bekommst Du ganz schnell eine Endlosschleife, wenn auch das Dummybild nicht geladen werden kann.

Gruß
.
 
Sorry, das mit dem Pfad war nur zur Veranschaulichung. Das ist schon klar.
Ich hätte es gerne mit dem gleichen Loader gemacht, weil ich erst schon sehr viele habe. Aber wenn es nicht anders geht...

Danke!
 
... dann würde Dir u.U. dieses blühen:
Code:
loader: ladeBild(bild);
+--> Bild kann nicht geladen werden
     +--> loader: ladeBild(alternativ);
          +--> Bild kann ebenfalls nicht geladen werden, also:
               +--> loader: ladeBild(alternativ);
                    +--> usw.

Als Workaround könntest Du die Anzahl bisheriger Ladeversuche in einer Zeitleistenvariablen speichern, und nach spätestens dem zweiten Versuch bei onLoadError nicht mehr reagieren.

Gruß
.
 
Ich nochmal :(

Ich mache das ganze jetzt mit einem neuen Loader.

Das Problem ist, dass das ganze in einer Schleife mit einer Laufvariablen abläuft. Wenn ich in der onLoadError den neuen Loader erstelle und ein Bild laden will, hat die Laufvariable schon weitergezählt.(geht das überhaupt? aber anscheinend ist es so :( ) Ich schicke am besten mal den ganzen Code:

Code:
_global.setTextboxes = function(region:String) {
	var i:Number = 1;

	while(_root["loader_"+region]["name"+i] != undefined) {
		if(_root["loader_"+region]["name1"]=="null") {
			_level0.createTextField("data1",1,20,120,300,80);
			_level0.data1.html=true;
			_level0.data1.htmlText="<font size='20'>"+ _root["loader_"+region].uid1; +"</font>";
		}
		else {
			_level0["picloader"+i]= new MovieClipLoader();
			_level0["listener"+i] = new Object();
			_level0.createEmptyMovieClip("pic"+i,i);
			_level0["pic"+i]._x=20+150*(Math.floor((i-1)/6));
			_level0["pic"+i]._y=120+80*((i-1)%6);
			_level0["picloader"+i].loadClip("http://pfad/photos/"+ region +"/"+ _root["loader_"+region]["name"+i] +".jpg", _level0["pic"+i]);
			//_level0["picloader"+i].loadClip("http://pfad/map/photos/dummy.jpg", _level0["pic"+i]);
			_level0["picloader"+i].addListener(_level0["listener"+i]);
			_level0["listener"+i].onLoadError = function() {
				trace("loaderrror");
				altPic(i);
			}
			_level0.createTextField("data"+i,i+30,80+150*(Math.floor((i-1)/6)),120+80*((i-1)%6),90,80);
			//enables html
			_level0["data"+i].html=true;
			//enables automatic word wrapping
			_level0["data"+i].wordWrap=true;
			_level0["data"+i].htmlText="<font size='16'>";
			_level0["data"+i].htmlText+=setLink(_root["loader_"+region]["name"+i],_root["loader_"+region]["uid"+i]);
			_level0["data"+i].htmlText+="</font>";
		}
		i++;
	}//end of while
}//end of setTextboxes

function altPic(i:Number) {
	_level0["pic"+i].removeMovieClip();
	_level0.createEmptyMovieClip("pic"+i,i);
	_level0["pic"+i]._x=20+150*(Math.floor((i-1)/6));
	_level0["pic"+i]._y=120+80*((i-1)%6);
	_level0["alt_picloader"+i] = new MovieClipLoader();
	_level0["alt_picloader"+i].loadClip("http://wpcfs.corp.hp.com/IPGEMEA_WPC/Enterprise/CSC_EMEA/Documents/map/photos/dummy.jpg", _level0["pic"+i]);
}

Danke im Voraus!
 
Hi,

onLoadError bekommt eine Referenz auf den Zielcontainer übergeben. Die könntest Du (anstelle von "i") verwenden, um in diesem Container ein Alternativbild anzuzeigen:
Code:
_level0["listener" + i].onLoadError = function(tgt) {
  trace("loaderrror");
  altPic(tgt);
}

...

function altPic(tgt) {
    var altLoader = new MovieClipLoader();
    altLoader.loadClip("alternativ.jpg", tgt);
}

Gruß
.
 

Neue Beiträge

Zurück