Zurück   Flashforum > Flash > Flash Fortgeschritten > Flash 8

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 20-08-2009, 12:45   #1 (permalink)
Neuer User
 
Benutzerbild von velocity.
 
Registriert seit: May 2005
Beiträge: 310
Problem mit mclListener.onLoadError

Hi!

Wird die mclListener.onLoadError Funktion immer gleich nach mcLoader.loadClip aufgerufen wenn der Content nicht geladen werden kann, oder wie erfolgt der aufruf!

Ich lasse in einer Schleife 3 Contents laden, für jeden soll jeweils wenn es nicht geladen werden konnte etwas erscheinen.

for (i=1; i<=3; i++)
{
mcLoader.loadClip("test.swf", testmc);


mclListener.onLoadError = function(mc:MovieClip)
{
trace("fehler bei datei"+i);
}
}
Hier kommt aber nicht raus:

fehler bei datei1;
fehler bei datei2;
fehler bei datei3;

sondern immer:
fehler bei datei1;
fehler bei datei1;
fehler bei datei1;

Am ende von der for-schleife wird zwar i wieder auf 1 gesetzt, aber ich dachte die funktion mclListener.onLoadError wird jeweils für jedes fehlerhafte laden aufgerufen. Es scheint aber so, als ob erst ganz am ende die funktion gestartet wird.
__________________
- we start 2009 -


http://www.aelfsciene.com - © Copyright. All rights reserved.

Geändert von velocity. (20-08-2009 um 12:50 Uhr)
velocity. ist offline   Mit Zitat antworten
Alt 20-08-2009, 13:35   #2 (permalink)
Neuer User
 
Benutzerbild von velocity.
 
Registriert seit: May 2005
Beiträge: 310
Hi!

Ich habs jetzt nochma probiert, der code ist ganz simpel:

onSelfEvent (load) {

var mclListener:Object = new Object();
var mcLoader = new MovieClipLoader();
mcLoader.addListener(mclListener);


for (x=1; x<=5;x++)
{
mcLoader.loadClip("Content2.png",test);
mclListener.onLoadError = function(test:MovieClip)
{
trace("fehler bei datei"+x);
}


}
}

Folgende Ausgabe:
fehler bei datei6;
fehler bei datei6;
fehler bei datei6;
fehler bei datei6;
fehler bei datei6;
fehler bei datei6;
__________________
- we start 2009 -


http://www.aelfsciene.com - © Copyright. All rights reserved.
velocity. ist offline   Mit Zitat antworten
Alt 20-08-2009, 19:01   #3 (permalink)
Neuer User
 
Benutzerbild von velocity.
 
Registriert seit: May 2005
Beiträge: 310
Hi!

Ich hab des jetzt nochmal probiert. So bald ich eine for-schleife mit anwende funktioniert es nicht mehr wirklich. Das Problem besteht also weiterhin, hier nochmal der Code mit dem ich es momentan teste:
Zitat:
onSelfEvent (load) {

var mclListener:Object = new Object();
var mcLoader = new MovieClipLoader();
mcLoader.addListener(mclListener);


for (x=1; x<=5;x++)
{
mcLoader.loadClip("Content2.png",test);
mclListener.onLoadError = function(test:MovieClip)
{
trace("fehler bei datei"+x);
}


}
}
__________________
- we start 2009 -


http://www.aelfsciene.com - © Copyright. All rights reserved.

Geändert von velocity. (20-08-2009 um 19:17 Uhr)
velocity. ist offline   Mit Zitat antworten
Alt 20-08-2009, 21:00   #4 (permalink)
Neuer User
 
Benutzerbild von velocity.
 
Registriert seit: May 2005
Beiträge: 310
Gibt es keine Begründung warum das so ist!
__________________
- we start 2009 -


http://www.aelfsciene.com - © Copyright. All rights reserved.
velocity. ist offline   Mit Zitat antworten
Alt 20-08-2009, 21:33   #5 (permalink)
Euer Nuser
 
Benutzerbild von ~pyropete~
 
Registriert seit: Apr 2004
Ort: Sand-City
Beiträge: 3.483
Du lädst 6-mal dieselbe und gleiche Datei. Ist doch klar dass Du da immer fehler-6
bekommst ... außerdem ist i nach Durchlauf immer = 6.

Jede Datei benötigt auch einen eigenen Container. Für die Rückgabe (bei onLoadError)
solltest Du dann auf das aufrufende Objekt referenzieren (mc), nicht auf i.

ActionScript:
  1. var i:Number = 0;
  2. var offset:Number = 0;
  3. var pnglist:Array = ["content1.png", "content2.png", "content3.png"];
  4. var conlist:Array = [];
  5. var total:Number = pnglist.length;
  6.  
  7.  
  8. for(i=1; i<=total; i++) {
  9.  
  10. var con:MovieClip = this.createEmptyMovieClip("con"+i, i);
  11. con._x = offset*i;
  12. offset += 200;
  13. conlist.push(con);
  14.  
  15. }
  16.  
  17. for(i=0; i<total; i++) {
  18.  
  19. mcLoader.loadClip(pnglist[i], conlist[i]);
  20.  
  21. }
  22.  
  23. mclListener.onLoadError = function(mc:MovieClip) {
  24.  
  25. trace(mc+".onLoadError");
  26.  
  27. }

Geändert von ~pyropete~ (20-08-2009 um 21:38 Uhr)
~pyropete~ ist offline   Mit Zitat antworten
Alt 20-08-2009, 21:39   #6 (permalink)
Neuer User
 
Benutzerbild von velocity.
 
Registriert seit: May 2005
Beiträge: 310
Hi!

Ja klar, hab vergessen einen teil vom code zu posten, so lautet es richtig:

Zitat:
onSelfEvent (load) {

var mclListener:Object = new Object();
var mcLoader = new MovieClipLoader();
mcLoader.addListener(mclListener);


for (x=1; x<=5;x++)
{
mcLoader.loadClip("Content"+x+".png",test);
mclListener.onLoadError = function(test:MovieClip)
{
trace("fehler bei datei"+x);
}


}
}
Und so sollte es doch auch funktionieren, was es aber eben nicht tut. ich bekommen immer:

Zitat:
fehler bei datei6;
fehler bei datei6;
fehler bei datei6;
fehler bei datei6;
fehler bei datei6;
Mal davon abgesehen, dass ich immer in den selben mc lade, was natürlich nicht so gehört. Allerdings sollte es ja für die Ausgabe keine rolle spielen.
__________________
- we start 2009 -


http://www.aelfsciene.com - © Copyright. All rights reserved.
velocity. ist offline   Mit Zitat antworten
Alt 20-08-2009, 21:56   #7 (permalink)
Euer Nuser
 
Benutzerbild von ~pyropete~
 
Registriert seit: Apr 2004
Ort: Sand-City
Beiträge: 3.483
Zitat:
Zitat von ~pyropete~ Beitrag anzeigen
Jede Datei benötigt auch einen eigenen Container. Für die Rückgabe (bei onLoadError)
solltest Du dann auf das aufrufende Objekt referenzieren (mc), nicht auf i.
Zitat:
Zitat von velocity. Beitrag anzeigen
Mal davon abgesehen, dass ich immer in den selben mc lade, was natürlich nicht so gehört. Allerdings sollte es ja für die Ausgabe keine rolle spielen.
Tut es aber.

Implementier mal mein Beispiel, das sollte dann wie gewünscht funzen.
~pyropete~ ist offline   Mit Zitat antworten
Alt 21-08-2009, 08:39   #8 (permalink)
Neuer User
 
Benutzerbild von velocity.
 
Registriert seit: May 2005
Beiträge: 310
Ok!

Allerdings würde mich mal interessieren was bei meiner möglichkeit nicht passt.
Ich möchte es eigentlich ohne arrays lösen sondern einfach nur mit einer simplen for schleife. In diesem Beispiel habe ich manuell 3 mcs erstellt mit der Bezeichnung test1, test2 und test3.

Zitat:
onSelfEvent (load) {

var mclListener:Object = new Object();
var mcLoader = new MovieClipLoader();
mcLoader.addListener(mclListener);


for (x=1; x<=3;x++)
{
mcLoader.loadClip("Content"+x+".png","test"+x);




}mclListener.onLoadError = function(mc:MovieClip)
{
trace (mc);

}

}
Würde es ja passen, aber ich benötige nicht den MC wo es probleme gab. So wie jetzt die Ausgabe bei trace lautet:

Zitat:
_level0.test2
_level0.test3
weiss ich zwar dass er nichts in den mc test2 und auch nichts in den mc3 schreiben/laden konnte, aber ich möchte nur die zahl nicht einen kompletten string.
Dass heißt ich benötige als trace ausgabe einfach nur 2 und 3.
__________________
- we start 2009 -


http://www.aelfsciene.com - © Copyright. All rights reserved.

Geändert von velocity. (21-08-2009 um 08:54 Uhr)
velocity. ist offline   Mit Zitat antworten
Alt 21-08-2009, 09:45   #9 (permalink)
Euer Nuser
 
Benutzerbild von ~pyropete~
 
Registriert seit: Apr 2004
Ort: Sand-City
Beiträge: 3.483
Mit substr() ginge das z.B. so:

ActionScript:
  1. mclListener.onLoadError = function(mc:MovieClip)
  2. {
  3.  
  4. var str:String = mc._name;
  5. var n:String = str.substr(-1);
  6. trace (mc + ".onLoadError "+n);
  7.  
  8. }
~pyropete~ ist offline   Mit Zitat antworten
Alt 21-08-2009, 10:05   #10 (permalink)
Neuer User
 
Benutzerbild von velocity.
 
Registriert seit: May 2005
Beiträge: 310
Ok!

Alles klar, so dachte ich mir das sowieso. Jetzt aber noch das letzte, warum gibt er mit denn wenn ich folgendes schreibe:

Zitat:
onSelfEvent (load) {

var mclListener:Object = new Object();
var mcLoader = new MovieClipLoader();
mcLoader.addListener(mclListener);


for (x=1; x<=3;x++)
{
mcLoader.loadClip("Content"+x+".png","test"+x);




}mclListener.onLoadError = function(mc:MovieClip)
{
trace (x);

}

}
Also bei Trace die X-Variable, immer 4 aus!

Vielen Dank schon einmal für deine Infos!
__________________
- we start 2009 -


http://www.aelfsciene.com - © Copyright. All rights reserved.
velocity. ist offline   Mit Zitat antworten
Alt 28-08-2009, 20:25   #11 (permalink)
Euer Nuser
 
Benutzerbild von ~pyropete~
 
Registriert seit: Apr 2004
Ort: Sand-City
Beiträge: 3.483
Der onLoadError wird erst abgefangen, wenn die Schleife durchgelaufen ist, also
x = 4.

Wie gesagt, das aufrufende Objekt für onLoadError ist hier erste Wahl, nicht i.

ActionScript:
  1. mclListener.onLoadError = function(mc:MovieClip)
  2. {
  3. trace (mc+".onLoadError"); // mc ist das aufrufende Objekt
  4. }
~pyropete~ ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 19:25 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele