Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 05-03-2005, 17:57   #1 (permalink)
Neuer User
 
Benutzerbild von destroy90210
 
Registriert seit: Feb 2002
Ort: wien
Beiträge: 458
extern bilder laden ->preloader

hi ich mache ne bildgallerie grade und möchte die bilder beim reinladenmit nem preloader versehn

der code
ActionScript:
  1. _root.picsPreloader = function(dataArray) {
  2.     //speichert den pfad in mc ab
  3.     mc = _root.photoDummy;
  4.     //erstellt den genauen pfad mit bildname
  5.     newPicName = "../bilder/photos/"+[dataArray[0]]+".jpg";
  6.     //laden des photos
  7.     mc.loadMovie(newPicName);
  8.     //prelaoder
  9.     total = mc.getBytesTotal();
  10.     geladen = mc.getBytesLoaded();
  11.     prozent_str = Math.round((geladen/total)*10000);
  12.     trace(_root.photoDummy.getBytesTotal());
  13.     onEnterFrame = function () {
  14.         if (geladen == total) {
  15.             ...
  16.         }
  17.     };
  18. };

leider bekomme ich immer 10 getraced und nie die richtigen kb's des bildes

weiss wer warum ??

mfg,
destroy90210
destroy90210 ist offline   Mit Zitat antworten
Alt 05-03-2005, 18:24   #2 (permalink)
Freizeitflasher
 
Benutzerbild von Alphanimal
 
Registriert seit: Jun 2004
Ort: Niederösterreich
Beiträge: 615
weil der dummy MC 10 Bytes hat (möglicherweise)

Beim externen Laden mit Preloader würde ich MovieLoader verwenden.

also:

ml = new MovieLoader()

oder sowas, weiss jetzt nicht wies genau funzt. schau in die Hilfe!

dann kannst du mit Events den Status abfragen

ml.onProgress = function()....
wird jedes mal aufgerufen wenn sich die geladenen Bytes verändern...
Alphanimal ist offline   Mit Zitat antworten
Alt 05-03-2005, 18:36   #3 (permalink)
Neuer User
 
Benutzerbild von destroy90210
 
Registriert seit: Feb 2002
Ort: wien
Beiträge: 458
ok
habs gefunden heisst new MovieClipLoader(); echt geil habe nicht gewusst das es sowas gibt, werds ma gleich mal anschaun

mfg,
destroy90210
destroy90210 ist offline   Mit Zitat antworten
Alt 05-03-2005, 18:41   #4 (permalink)
Nix Wisser
 
Benutzerbild von nullidee
 
Registriert seit: May 2003
Ort: Würzburg, Kleinstadt
Beiträge: 3.510
du fragst ja nur einmal ab. schau dir mal diese ladefunction an.
Ist von Salazar aus diesem Forum.

PHP-Code:
ladestatus = function () {
        
// Einen onEnterFrame-Event erstellen, so dass nun
        // der Ladezustand kontinuierlich abgefragt und
        // angezeigt wird
        
loader.onEnterFrame = function() {
                
// Geladene und zu ladenede Bytetes abfragen
                
geladen _root.ladeziel.getBytesLoaded();
                
zuladen _root.ladeziel.getBytesTotal();
                
// Sicherheitsabfrage, da ein leerer MC so ungefähr
                // 4 bis 5 Bytes hat und zu Verfälschungen führen könnte
                
if (geladen>=10) {
                        
// Ladeanzeige sichtbar machen
                        
loader._visible true;
                        
// Berechnung der bereits geladenen Prozent
                        
prozent Math.round(geladen/zuladen*100);
                        
// Ausgabe im dynamischen Textfeld "prozentanzeige"
                        
this.prozentanzeige.text prozent+" Prozent geladen";
                        
// Skalierung des Balkens anhand der Prozentzahl
                        
this.balken._xscale prozent;
                        
// Wenn komplett geladen
                        
if (prozent>=100) {
                                
// den EnterFrame-Event löschen um Performance zu sparen
                                
delete this.onEnterFrame;
                                
// die Ladeanzeige wieder unsichtbar machen
                                
this._visible false;
                        }
                }
        };
};
ladeziel.loadMovie("film2.swf");
ladestatus(); 
__________________
nullidee

Abakus GT 10² Kugeln - 80"Leinwand - CARAN D´ACHE SUPRACOLOR®

Geändert von nullidee (05-03-2005 um 18:42 Uhr)
nullidee ist offline   Mit Zitat antworten
Alt 06-03-2005, 10:23   #5 (permalink)
Neuer User
 
Benutzerbild von destroy90210
 
Registriert seit: Feb 2002
Ort: wien
Beiträge: 458
so, ich habe es jetzt schon mal geschafft mit der classe bilder zu laden nur leider geht da irgendwas nicht so genau wie ich mag bzw. ich mache nen fehler, weiss aber nicht welchen

ActionScript:
  1. //resizen
  2. MovieClip.prototype.resizen = function(width, height, delay) {
  3.     var mc = this;
  4.     _root.resizeFinish = false;
  5.     onEnterFrame = function () {
  6.         mc._width += (width-mc._width)/delay;
  7.         mc._height += (height-mc._height)/delay;
  8.         if (Math.abs((width-mc._width))<=1 && Math.abs((height-mc._height))<=1) {
  9.             mc._width = width;
  10.             mc._height = height;
  11.             delete onEnterFrame;
  12.             _root.resizeFinish = true;
  13.         }
  14.     };
  15. };
  16. //fade
  17. MovieClip.prototype.fade = function(step, end) {
  18.     var mc = this;
  19.     _root.alphaFinish = false;
  20.     //startwert des alphawerts des mc's
  21.     start = mc._alpha;
  22.     //wieviel loops durchlaufen werden müssen bis der enwert erreicht worden ist
  23.     loops = Math.abs((start-end)/step);
  24.     i = 0;
  25.     onEnterFrame = function () {
  26.         i++;
  27.         mc._alpha += step;
  28.         if (i>=loops) {
  29.             mc._alpha = end;
  30.             delete onEnterFrame;
  31.             _root.alphaFinish = true;
  32.         }
  33.     };
  34. };
  35. var my_mcl = new MovieClipLoader();
  36. myListener = new Object();
  37. myListener.onLoadStart = function(target_mc) {
  38.     trace("onlodstart");
  39.     _root.photoDummy._alpha = 0;
  40.     loadProgress = my_mcl.getProgress(target_mc);
  41. };
  42. myListener.onLoadProgress = function(target_mc, loadedBytes, totalBytes) {
  43.     trace("onLoadProgress");
  44.     _root.test.text = loadedBytes;
  45. };
  46. myListener.onLoadComplete = function(target_mc) {
  47.     trace("onLoadComplete");
  48.  
  49. };
  50. myListener.onLoadInit = function(target_mc) {
  51.     trace("onLoadInit");
  52.     width = target_mc._width;
  53.     height = target_mc._height;
  54.     _root.bgContent.resizen(width, height, 5);
  55. //sobald ich das onEnterFrame hier ausführe, will er meinen hintergund nicht mehr resizen, wenn ich ds auskommentiere dann resizt er...
  56. //er scheint nicht mal ins onEnterFrame hinzugehen, weill wenn ich da was tracen mag dann traced er nix
  57.     onEnterFrame = function () {
  58. trace("irgendwas");
  59.         if (_root.resizenFinish == true) {
  60.             delete onEnterFrame;
  61.             _root.bgContent.fade(5, 100);
  62.         }
  63.     };
  64. };
  65. myListener.onLoadError = function(target_mc, errorCode) {
  66.     trace("onLoadError");
  67. };
  68. my_mcl.addListener(myListener);
  69. // laden des ersten bildes
  70. my_mcl.loadClip("../bilder/photos/lisi1.jpg", _root.photoDummy);
die frage ist im code kommentiert

weiss wer was da falsch ist bzw. wie man das richtig lösen könnte
hoffe man erkennt was ich vorhabe.


mfg,
destroy90210

Geändert von destroy90210 (06-03-2005 um 10:25 Uhr)
destroy90210 ist offline   Mit Zitat antworten
Alt 06-03-2005, 15:19   #6 (permalink)
Freizeitflasher
 
Benutzerbild von Alphanimal
 
Registriert seit: Jun 2004
Ort: Niederösterreich
Beiträge: 615
so wie ich das sehe versuchst du dem Listener ein onEnterFrame Event zu verpassen.
Das hat keinen Sinn, weil der Listener nicht für einen MC ist, sondern für den MovieClipLoader...

versuch mal
_root.photoDummy.onEnterFrame = ...

oder nur
_root.onEnterFrame = ...

sollte halt ein MC sein! ein MovieClipLoader hat kein onEnterFrame Event
Alphanimal ist offline   Mit Zitat antworten
Alt 06-03-2005, 15:43   #7 (permalink)
Neuer User
 
Registriert seit: May 2004
Beiträge: 31
hallo,

entschuldigung wenn ich einfach mal so diesen thread einnehme
aber ich hab ebenfalls ein problem mit externen bildern und preloadern

mein skript funktioniert eigentlich, aber nur wenn ich die if schleife weg lassen
warum gibts ein problem mit dieser schleife? kann sich das vielleicht jemand mal anschauen:

ActionScript:
  1. var i:Number = 0;
  2. test_btn.onRelease = function() {
  3.     //if (i < 35) {
  4.        
  5.         i++;
  6.        
  7.         image_str = "images/" + i + ".jpg";
  8.  
  9.        
  10.         _root.inhalt_mc.loadMovie(image_str);
  11.         var kbgeladen_num:Number;
  12.         var kbgesamt_num:Number;
  13.        
  14.         var id = setInterval(pruefen, 100);
  15.         function pruefen() {
  16.            
  17.             kbgesamt_num = Math.round(_root.inhalt_mc.getBytesTotal() / 1024);
  18.             kbgesamt_str = kbgesamt_num.toString();
  19.             kbgeladen_num = Math.round(_root.inhalt_mc.getBytesLoaded() / 1024);
  20.             kbgeladen_str = kbgeladen_num.toString();
  21.             _root.proz_num = Math.round((kbgeladen_num / kbgesamt_num) * 100);
  22.             if (kbgeladen_num > 0 && kbgeladen_num == kbgesamt_num) {
  23.                 clearInterval(id);
  24.             }
  25.         }
  26.     //}
  27. };
velmts ist offline   Mit Zitat antworten
Alt 06-03-2005, 15:59   #8 (permalink)
Freizeitflasher
 
Benutzerbild von Alphanimal
 
Registriert seit: Jun 2004
Ort: Niederösterreich
Beiträge: 615
versuch mal statt:

Code:
var i:Number = 0;
einfach nur:

Code:
 i = 0;
kann sein dass da derGültigkeitsbereich von i anders definiert wird, ich kenn mich da auch nicht si genau aus.
(kann sein dass i ausserhalb der Funktion eine andere Variable ist als i in der Funktion)
Alphanimal ist offline   Mit Zitat antworten
Alt 06-03-2005, 16:13   #9 (permalink)
Neuer User
 
Registriert seit: May 2004
Beiträge: 31
hm, nein bringt leider auch nicht
wenn ich das if weglasse läuft alles
perfekt, aber ich kann so die anzahl der zu ladenen bilder ja nicht mehr einschränken ..
velmts ist offline   Mit Zitat antworten
Alt 06-03-2005, 16:24   #10 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Nur mal so: Vielleicht hinter image_str = "images/" + i + ".jpg"; ein trace(image_str); setzten und gucken, was dabei rauskommt...
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 06-03-2005, 16:39   #11 (permalink)
Neuer User
 
Registriert seit: May 2004
Beiträge: 31
genau das was ich will: images/1.jpg

das bild wird ja auch geladen usw, nur der preloader
mit prozent anzeige usw funktioniert nicht
velmts ist offline   Mit Zitat antworten
Alt 06-03-2005, 16:46   #12 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Vielleicht vorher noch ein

PHP-Code:
_root.inhalt_mc.unloadMovie(); 
reinnehmen und/oder kbgeladen_num und kbgesamt_num auf 0 setzen?
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 06-03-2005, 19:25   #13 (permalink)
Neuer User
 
Benutzerbild von destroy90210
 
Registriert seit: Feb 2002
Ort: wien
Beiträge: 458
also wenn man es ohne den MovieClipLoader

dann geht es so

wobei ich da was nicht so ganz verstehe, ich muss dynamisch nochmal einen MC in meinen Dummy machen das es geht, nur dann zeigt er die kb Anzahl des bildes richtig an, ohne den container photo bekomme ich immer nur 10 als ergebnis....

warum???
ActionScript:
  1. _root.picsPreloader = function(dataArray) {
  2.     _root.photoDummy.createEmptyMovieClip("photo", 4);
  3.     mc = _root.photoDummy.photo;
  4.     newPicName = "../bilder/photos/"+[dataArray[0]]+".jpg";
  5.     mc.loadMovie(newPicName);
  6.     onEnterFrame = function () {
  7.         geladen = mc.getBytesLoaded();
  8.         zuladen = mc.getBytesTotal();
  9.         if (geladen>=4) {
  10.             prozent = Math.round(geladen/zuladen*100);
  11.             trace(geladen);
  12.             _root.prozentAnzeige.text = prozent+" Prozent geladen";
  13.             if (prozent>=100) {
  14.                 delete onEnterFrame;
  15.             }
  16.         }
  17.     };
  18. };

mfg,
destroy90210
destroy90210 ist offline   Mit Zitat antworten
Alt 08-05-2007, 10:09   #14 (permalink)
Neuer User
 
Registriert seit: Sep 2006
Beiträge: 50
nun, da hier schon ne frage zu salazar´s preloader aufgetaucht ist, kann ich ich ja auch gleich mal mitmischen...
Ich habe dessen code abgeändert, so dass mehrere bilder gleichzeitig gepreloaded werden. Das klappt auch wunderbar - die bilder werden geladen, man sieht sie auch wenn
_root["ladeziel"+i]._visible = true;
eingestellt ist. Nur was mir Sorgen bereitet ist die Ladeanzeige : sie zeigt immer nur "818" an. Es kann net an der größe der dateien ("adern"+i) liegen, die ich lade, die sind alle viel größer als 818 byte. Ich verlange ja net, dass der preloader die gesamt byte-zahl aller pics anzeigt, ich weiß ja aus anderen beiträgen(ich mag die suche dass das net geht und alle bilder erst einmal geladen sein müssten. Nur sollte er wenigstens immer von der aktuell zu ladenden datei die richtige größe zeigen.Hier der code:

PHP-Code:
ladestatus = function () {
    
        
// Einen onEnterFrame-Event erstellen, so dass nun
        // der Ladezustand kontinuierlich abgefragt und
        // angezeigt wird 
        
loader.swapDepths(100);
        
loader.onEnterFrame = function() {
            for(
i=1;i<6;i++){
                
// Geladene und zu ladenede Bytetes abfragen
                
geladen _root["ladeziel"+i].getBytesLoaded();
                
zuladen _root["ladeziel"+i].getBytesTotal();
                
_root["ladeziel"+i]._visible false;
                
// Sicherheitsabfrage, da ein leerer MC so ungefähr
                // 4 bis 5 Bytes hat und zu Verfälschungen führen könnte
                
if (geladen>=10) {
                        
// Ladeanzeige sichtbar machen
                        
loader._visible true;
                        
// Berechnung der bereits geladenen Prozent
                        
prozent Math.round(geladen/zuladen*100);
                        
// Ausgabe im dynamischen Textfeld "prozentanzeige"
                        
this.prozentanzeige.text geladen+" Prozent geladen"
                        
                        
// Wenn komplett geladen
                        
if (prozent>=100) {
                                
// den EnterFrame-Event löschen um Performance zu sparen
                                
delete this.onEnterFrame;
                                
// die Ladeanzeige wieder unsichtbar machen
                                
this._visible false;
                                
                        }
                }
        };
    }
};
    for(
i=1;i<6;i++){
        
_root.createEmptyMovieClip("ladeziel"+ii);
var 
pfad "../../img/tuts/adern/adern"+i+".jpg";
_root["ladeziel"+i].loadMovie(pfad);


}
ladestatus(); 
psytr0ll 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 08:43 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele