Zurück   Flashforum > Flash > ActionScript > ActionScript 3

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 15-11-2010, 09:12   #1 (permalink)
webbing...
 
Registriert seit: Jun 2002
Ort: Hockenheim
Beiträge: 421
Mehrere Daten gleichzeitig von extern laden (Event.COMPLETE)

Hi in die Runde!

Wahrscheinlich mal wieder eine dummie Frage...

Mit folgender Zeile sage ich meinem Script, wenn "slide" geladen ist dann starte die Funktion "fadeslide".
HTML-Code:
slide.contentLoaderInfo.addEventListener(Event.COMPLETE, fadeSlide);
Angenommen in meiner Animation sind parallel 3 slides und meine Funktion "fadeSlide" soll erst starten wenn ALLE drei geladen sind wie gehe ich da vor?

Kann ich anstelle von der Funktion "fadeslide" eine Variable eintragen die sich hochzählt? und erst wenn der wert 3 erreicht ist zu meiner function springt?

Ein Tipp in die richtige Richtung wär genial!



---
Wen es interessiert:
Ich wurstel mich übrigens gerade durch folgendes Tutorial zum Thema Slideshows, schön gemacht wie ich finde:
Create a Flash AS3 Slideshow with XML - The Tech Labs

An dieser Stelle: Danke schön.
TinySpider ist offline   Mit Zitat antworten
Alt 15-11-2010, 09:30   #2 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
eine globale zum zählen
je datei ein loader-objekt, deren ladezustand kannst du jederzeit abfragen.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de
hgseib ist offline   Mit Zitat antworten
Alt 15-11-2010, 09:51   #3 (permalink)
webbing...
 
Registriert seit: Jun 2002
Ort: Hockenheim
Beiträge: 421
Hi hgseib,

Danke für das schnelle Antworten!
Soweit war ich schon. Die Frage ist wie die Syntax dafür ist.

Mir würde nur so etwas einfallen und ich fürchte die Syntax ist wohl falsch:

HTML-Code:
var ladezustand1:int;
var ladezustand2:int;
var ladezustand3:int;

slide.contentLoaderInfo.addEventListener(Event.COMPLETE, ladezustand1=1);
slide2.contentLoaderInfo.addEventListener(Event.COMPLETE, ladezustand2=1);
slide3.contentLoaderInfo.addEventListener(Event.COMPLETE, ladezustand3=1);

if (ladezustand1==1 AND ladezustand2==1 AND ladezustand3==1){
fadeSlide();
ladezustand1=0;
ladezustand2=0;
ladezustand3=0;

}
TinySpider ist offline   Mit Zitat antworten
Alt 15-11-2010, 10:12   #4 (permalink)
Techniker
 
Benutzerbild von hgseib
 
Registriert seit: Sep 2003
Ort: 64807
Beiträge: 16.324
eine globale variable anlegen kannst du?

und wie ein loader funktioniert, dazu bietet die flash-hilfe beispiele (bitte dort nachlesen, das muss man hier nicht für jeden immer wieder neu erfinden ;-)

slide.contentLoaderInfo.addEventListener(Event.COM PLETE, ladezustand1=1);
ich dachte: "..Ein Tipp in die richtige Richtung wär genial!.." würde langen. leider sehe ich, dir fehlen elementare kenntnisse. beschäftige dich bitte erstmal mit den listener. das ist elementarstes wissen. ohne das wirst du mit AS3 nicht glücklich. und immer wieder die flash-hilfe:
der 2. parameter von addEventListener muss eine funktion sein. hier: genau die funktion, die aufgerufen wird, wenn das ereignis "laden complett" statt findet. dann ist der geeignete augenblick, die eine globale um eins zu erhöhen. und wenn diese funktion aufgerufen wird und dein ladezähler auf 3 steht, dann sind wohl alle drei fertig geladen worden.
__________________
die ultimative antwort auf alle programmierfragen: der debugger
mfg h.g.seib www.SeibsProgrammLaden.de

Geändert von hgseib (15-11-2010 um 10:15 Uhr)
hgseib ist offline   Mit Zitat antworten
Alt 15-11-2010, 10:34   #5 (permalink)
webbing...
 
Registriert seit: Jun 2002
Ort: Hockenheim
Beiträge: 421
Ok, cool.
Das wars was mir fehlte!

Ich habs grob so gelöst wie von Dir vorgeschlagen (und ja ich weiss ich habe nur gefääährliches "Halbwissen" - verdammt ich bin geoutet ):


HTML-Code:
var ladezustand:int;

function ladeinhalte(){
...
slide1.contentLoaderInfo.addEventListener(Event.COMPLETE, fadeSlide);
slide2.contentLoaderInfo.addEventListener(Event.COMPLETE, fadeSlide);
slide3.contentLoaderInfo.addEventListener(Event.COMPLETE, fadeSlide);
...
}


function fadeSlide(e:Event):void {
ladezustand++;

if (ladezustand==3){
// Führe hier aus was passieren soll, wenn alle drei Slides geladen sind
ladezustand=0;
}

}

Scheint zu funktionieren. Dank Dir!

Geändert von TinySpider (15-11-2010 um 10:43 Uhr)
TinySpider ist offline   Mit Zitat antworten
Alt 15-11-2010, 11:52   #6 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.866
ich würd es noch etwas anders bauen:
ActionScript:
  1. var ladezustand:int=0;
  2.  
  3. function ladeinhalte(){
  4.     ...
  5.     slide1.contentLoaderInfo.addEventListener(Event.COMPLETE, fadeSlide);
  6.     slide2.contentLoaderInfo.addEventListener(Event.COMPLETE, fadeSlide);
  7.     slide3.contentLoaderInfo.addEventListener(Event.COMPLETE, fadeSlide);
  8.     ladezustand += 3;
  9.     ...
  10. }
  11.  
  12.  
  13. function fadeSlide(e:Event):void {
  14.     if (--ladezustand) return;
  15.  
  16.     // Führe hier aus was passieren soll, wenn alle drei Slides geladen sind
  17. }

jedes mal wenn er anfängt zu laden, eins hochzählen, und beim überprüfen wieder runter, wenn er wieder bei 0 angekommen ist, is alles da.
Vorteil: du musst dich nirgnds darum kümmern wie viele Loads gerade laufen
Zitat:
if (ladezustand == 3){ ...
__________________
greetz Thomas

plz RTFM & Coding Conventions

Geändert von thomas_E (15-11-2010 um 11:54 Uhr)
thomas_E ist offline   Mit Zitat antworten
Alt 15-11-2010, 12:00   #7 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.139
Hm, counter raus, die verschiedenen Loader in ein Array pushen und poppen, wenn ihr content geladen wurde. Vorteil: man kann vergessen den counter zu manipulieren wenn mehr/weniger Inhalte geladen werden.
Omega Psi ist offline   Mit Zitat antworten
Alt 15-11-2010, 12:01   #8 (permalink)
Perverted Hermit
 
Benutzerbild von Omega Psi
 
Registriert seit: Mar 2004
Ort: Delmenhorst
Beiträge: 12.139
Ist aber auch nur eine Idee...
Omega Psi ist offline   Mit Zitat antworten
Alt 15-11-2010, 12:54   #9 (permalink)
Keine Panik
 
Registriert seit: Apr 2010
Ort: Düsseldorf (im ernst)
Beiträge: 1.866
pushen ja, poppen nicht so einfach.
du musst schon suchen, dass du den richtigen Loader aus dem Array entfernst (Schleife + splice).
gerade Loader-Events haben ja bekanntlich nicht immer die Neigung in der Reihenfolge zurückzukommen, wie die Loader gestartet wurden.

edit: und wenn ich vergesse den Counter zu manipulieren kommt genauso murks raus, wie wenn ich vergesse das Array zu manipulieren.
fazit: Factory die das nie nicht vergisst
__________________
greetz Thomas

plz RTFM & Coding Conventions

Geändert von thomas_E (15-11-2010 um 12:57 Uhr)
thomas_E ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Stichworte
complete, event, extern, laden, mehrere daten

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


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Event-Funktion für mehrere Events gleichzeitig definieren stefan_1st Flash 8 3 03-06-2007 15:41
Preloader | mehrere externe Daten gleichzeitig momo-loom ActionScript 1 2 06-01-2004 18:14
mehrere jpg's gleichzeitig laden in opera rickenbacke ActionScript 1 12 02-07-2003 21:01
mehrere swf's gleichzeitig in mc laden... commander-x ActionScript 1 3 05-12-2002 21:28


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:59 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele