Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 09-02-2004, 19:06   #1 (permalink)
LBY
Neuer User
 
Benutzerbild von LBY
 
Registriert seit: Dec 2002
Ort: Würzburg
Beiträge: 130
jpg im hintergrund laden???

Hi,

ich würde gerne 8 Bilder im Hintergrund laden, wärend das erste,sobald es geladen ist angezeigt wird. Aber es passiert nichts und im trace steht 100 ???.

ActionScript:
  1. stop();
  2. for (i=1; i<8; ++i) {
  3.     loadMovie("images/pic_1"+i+".jpg", "BildAnzeige."+i+"Bild");
  4.     this.createEmptyMovieClip(lader);
  5.     lader.onEnterFrame = function() {
  6.         GesammtGross = BildAnzeige.Bild+i.getBytesTotal();
  7.         GeladenGross = BildAnzeige.Bild+i.getBytesLoaded();
  8.         ProzentGross = Math.floor((GeladenGross*100)/GesammtGross);
  9.         if (ProzentGross == 100) {
  10.             trace(i);
  11.             delete lader.onEnterFrame;
  12.         }
  13.     if (i == 1) {
  14.         BildAnzeige.gotoAndPlay("go");
  15.         }
  16.     };
  17. }

Geändert von LBY (09-02-2004 um 21:05 Uhr)
LBY ist offline   Mit Zitat antworten
Alt 09-02-2004, 22:15   #2 (permalink)
LBY
Neuer User
 
Benutzerbild von LBY
 
Registriert seit: Dec 2002
Ort: Würzburg
Beiträge: 130

kann mir denn wenigstens jemand veraten, ob die "+" richtig gesetzt sind, bzw. wie es richtig lauten müsste???
LBY ist offline   Mit Zitat antworten
Alt 10-02-2004, 10:44   #3 (permalink)
Neuer User
 
Registriert seit: Aug 2001
Ort: Austria/Vienna
Beiträge: 225
1. Zuerst lädst du die Bilder in "Bildanzeige."+i"+ Bild und danach liest du die Bytes aus Bildanzeige.Bild+i. - die 2 müssen natürlich gleich heißen

2. heißen die Bilder in deinem images-Verzeichnis: pic_11.jpg, pic_12.jpg, oder pic_1.jpg, pic_2.jpg?
In deinem Code werden die Bilder pic_11.jpg, pic_12.jpg geladen

3. dann willst du ja 8 bilder laden, dann muß es in der for-schleife heißen: i<=8

so müßte es gehen!
ActionScript:
  1. stop();
  2. for (i=1; i<=8; ++i) {
  3.         BildAnzeige["Bild"+i].loadMovie("images/pic_"+i+".jpg");
  4.         this.createEmptyMovieClip(lader);
  5.         lader.onEnterFrame = function() {
  6.                 GesammtGross = BildAnzeige["Bild"+i].getBytesTotal();
  7.                 GeladenGross = BildAnzeige["Bild"+i].getBytesLoaded();
  8.                 ProzentGross = Math.floor((GeladenGross*100)/GesammtGross);
  9.                 if (ProzentGross == 100) {
  10.                         trace(i);
  11.                         delete lader.onEnterFrame;
  12.                 }
  13.                 if (i == 1) {
  14.                         BildAnzeige.gotoAndPlay("go");
  15.                 }
  16.         };
  17. }
aber sieh dir nochmal die Sache mit deinem lader-MC an. Ich glaub jetzt fast, dass der bei jedem Schleifendurchgang überschrieben wird. Der müßte für jedes Bild angelegt werden. Außer du willst nur das erste Bild überprüfen, dann allerdings würde ich den lader-MC außerhalb der for-Schleife anlegen.

Warum allerdings im trace 100 steht weiß ich auch nicht

Ich hoffe, das war hilfreich

lg TF
TigerFox ist offline   Mit Zitat antworten
Alt 10-02-2004, 14:21   #4 (permalink)
LBY
Neuer User
 
Benutzerbild von LBY
 
Registriert seit: Dec 2002
Ort: Würzburg
Beiträge: 130
Danke schön

zu 1. , war gestern wohl ein weinig müde ...

zu 2. die bilder heisen "pic_11.jpg", ...

zu 3.

Habs noch ein wenig abgeändert, aber er erkennt nicht "i == 1" in der 2. if-anweisung. kann das an der gültigkeit der variablen liegen, da vorlader wieder ein extra mc ist??

ActionScript:
  1. for (i=1; i<=8; ++i) {
  2.     ["Bild"+i].loadMovie("images/pic_1"+i+".jpg");
  3.     this.createEmptyMovieClip("vorlader", 1);
  4.     vorlader.onEnterFrame = function() {
  5.         GesammtGross = ["Bild"+i].getBytesTotal();
  6.         GeladenGross = ["Bild"+i].getBytesLoaded();
  7.         ProzentGross = Math.floor((GeladenGross*100)/GesammtGross);
  8.         if (GeladenGross>=GesammtGross) {
  9.             trace("geladen"); //wird angezeigt
  10.             if (i == 1) {
  11.                 trace("yepp"); //wird nicht angezeigt
  12.                 Beschreibung.htmlText = Daten["flyer_text_"+index];
  13.                 gotoAndPlay("go");
  14.             }
  15.             delete vorlader.onEnterFrame;
  16.         }
  17.     };
  18. }

Geändert von LBY (10-02-2004 um 14:26 Uhr)
LBY ist offline   Mit Zitat antworten
Alt 10-02-2004, 14:50   #5 (permalink)
Neuer User
 
Registriert seit: Aug 2001
Ort: Austria/Vienna
Beiträge: 225
Das liegt eher daran, dass bei jedem Schleifendurchlauf ein MC -- vorlader erzeugt wird und das alte rausgeschmissen. Das geht dann so schnell, dass die if -Abfrage (GeladenGross>=GesammtGross) gar nicht zum checken kommt.

Du müßtest das preloader-Script aus der Schleife rausgeben, oder für jedes Bild einen eigenen vorlader machen.
zB. so:
ActionScript:
  1. for(i=1;i<=8;i++){
  2. ...
  3.  this.createEmptyMovieClip("vorlader"+i, i);
  4.         this["vorlader"+i].onEnterFrame = function() {
  5. ...
  6. }
  7. }

success
TF
TigerFox ist offline   Mit Zitat antworten
Alt 10-02-2004, 15:27   #6 (permalink)
LBY
Neuer User
 
Benutzerbild von LBY
 
Registriert seit: Dec 2002
Ort: Würzburg
Beiträge: 130
Die if (GeladenGross>=GesammtGross) schleife wird durchlaufen, nur nicht die if (i==1) in derselbigen.

Wenn ich es nach deinem vorschlag mache, kommt er in eine enlosschleife und zeigt mir immer "9 geladen"?? an.

ActionScript:
  1. ...
  2. if (GeladenGross>=GesammtGross) {
  3.                         trace(i+" geladen"); //wird angezeigt, in endlosschleife mit i=9???
  4.                         if (i == 1) {
  5.                                 trace("yepp"); //wird nicht angezeigt
  6. ...
LBY ist offline   Mit Zitat antworten
Alt 11-02-2004, 12:18   #7 (permalink)
Neuer User
 
Registriert seit: Aug 2001
Ort: Austria/Vienna
Beiträge: 225
Also, du mußt dir folgendes vorstellen:
deine for-Schleife läuft im _root und deine Abfrage (Geladen>=gesamt) wird im MC - "vorladen" + i ausgeführt.Selbst wenn die if-Abrage des preloaders true ergibt, weiß das MC - "vorlader"+i nichts von dem i. Damit jeder "vorlader"+i MC weiß, welche nummer er hat, mußt die nummer darin speichern.
Am besten so:
ActionScript:
  1. this["vorlader"+i].nr = i;
jetzt hat jeder seine eigene nummer, die du nun abfragen kannst:
ActionScript:
  1. if (GeladenGross>=GesammtGross) {
  2.         if (this.nr == 1) { // TF ---> this bezieht sich hier auf den vorlader
  3.                 trace("yepp"); //wird nicht angezeigt
  4.                 ...

und noch was: das mit dem "9 geladen" ist keine Endlosschleife. Wenn deine for-Schleife durch ist, dann hat i nun mal den Wert 9 und der trace-befehl wird wegen dem enterFrame-Event immer wieder ausgeführt.

lg TF
TigerFox ist offline   Mit Zitat antworten
Alt 11-02-2004, 18:20   #8 (permalink)
LBY
Neuer User
 
Benutzerbild von LBY
 
Registriert seit: Dec 2002
Ort: Würzburg
Beiträge: 130
Danke!
Ich hab jetzt noch zwei weitere probleme:

1. gibt es für folgendes script auch eine "ein-zeilen-variante"?
ActionScript:
  1. Bild1._alpha = 0;
  2. Bild2._alpha = 0;
  3. Bild3._alpha = 0;
  4. Bild4._alpha = 0;
  5. Bild5._alpha = 0;
  6. Bild6._alpha = 0;
  7. Bild7._alpha = 0;
  8. Bild8._alpha = 0;

2. Das script funktioniert soweit, dass beide textfelder angezeigt werden, LadeAni auf "go" springt.
nur das geladene bild wird nicht angezeigt.
ActionScript:
  1. function Flyer(index) {
  2.     ["Bild"+index].loadMovie("images/pic_"+index+".jpg");
  3.     this.createEmptyMovieClip("lader", 1);
  4.     this.lader.nr = index;
  5.     _root.broschüre = index;
  6.     Bild1._alpha = 0;
  7.     Bild2._alpha = 0;
  8.     Bild3._alpha = 0;
  9.     Bild4._alpha = 0;
  10.     Bild5._alpha = 0;
  11.     Bild6._alpha = 0;
  12.     Bild7._alpha = 0;
  13.     Bild8._alpha = 0;
  14.     TextAni._alpha = 100;
  15.     this.lader.onEnterFrame = function() {
  16.         GesammtGross = _root.DetailsFenster.Objekte["Bild"+this.nr].getBytesTotal();
  17.         GeladenGross = _root.DetailsFenster.Objekte["Bild"+this.nr].getBytesLoaded();
  18.         ProzentGross = Math.floor((GeladenGross*100)/GesammtGross);
  19.         _root.DetailsFenster.Objekte.TextAni.Prozentgeladen = ProzentGross;
  20.         if (GeladenGross>=GesammtGross) {
  21.             _root.DetailsFenster.Objekte["Bild"+this.nr]._alpha = 100;
  22.             _root.DetailsFenster.Objekte.Beschreibung.htmlText = Daten["flyer_text_"+this.nr];
  23.             _root.DetailsFenster.Objekte.GrossAnsicht.htmlText = Daten["flyer_gross_"+this.nr];
  24.             trace("yepp  "+this.nr);
  25.             _root.DetailsFenster.Objekte.LadeAni.gotoAndPlay("go");
  26.             delete _root.DetailsFenster.Objekte.lader.onEnterFrame;
  27.         }
  28.     };
  29. }
LBY ist offline   Mit Zitat antworten
Alt 11-02-2004, 22:17   #9 (permalink)
Neuer User
 
Registriert seit: Apr 2002
Ort: Ludwigshafen
Beiträge: 547
hi zu 1:

["Bild"+index]._alpha = 0;

jo.

mfg

virus449
virus449 ist offline   Mit Zitat antworten
Alt 12-02-2004, 15:15   #10 (permalink)
LBY
Neuer User
 
Benutzerbild von LBY
 
Registriert seit: Dec 2002
Ort: Würzburg
Beiträge: 130
@virus449:
bei deiner lösung ist aber immer nur bei ["bild"+index] alpha=0.
ich hätte gerne Bild1 bis ...8 aplha=0.

Erweiterung zu 2.
Wenn ich das script jeweils für das bestimmte Bild1 etc. schreibe funktioniert es. wenn es mit der index-variable geschrieben ist, dann wird nie das bild angezeigt
kann mir das evtl jemand erläutern?
LBY ist offline   Mit Zitat antworten
Alt 12-02-2004, 21:39   #11 (permalink)
Neuer User
 
Registriert seit: Apr 2002
Ort: Ludwigshafen
Beiträge: 547
hi,

hab grad gesehn das das ne funktion ist. das was ich geschrieben habe würde bei einem schleifendurchlauf sinn machen also

for() blabla dann hättest du index als zählvariable gehabt.

sorry

virus449
virus449 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 17:32 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele