Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 07-12-2005, 12:54   #1 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Beiträge: 37
preloader für mehrere externe bilder

ich habe ein wunderbares skript für einen preloader ein externes bild reinlädt. dieses habe ich nun versucht um mehrere bilder vorzuladen damit sie im cache des users vorhanden sind. aber irgendwie klappt es noch nicht ganz.

PHP-Code:
    var zielfilm = new Array();
    
_root.createEmptyMovieClip("ziel"2);
    
_root.ziel._visible false;
for (
i=1i<=_global.anzahli++) {
    
zielfilm[i] = "bilder/bild"+i+".jpg";
    
_root.ziel.loadMovie(zielfilm[i]);

}
//++++++++++++++++++++++++++++++ optik des preloaders +++++++++++++++++++++
// anfangswert des balkes auf der x-achse
        
var startx 290 ;
// anfangswert des balkes auf der y-achse
        
var starty 190 ;
// balkenbreite 
        
var breite 250;
// balkenhoehe
        
var hoehe 10;
// balkenfarbe
        
var farbe 0x3399CC;
// transparenz des balkens
        
var alpha 100;
// textfarbe        
        
var textfarbe 0x3399CC;
// schriftart
        
var schriftart "Verdana";
// schriftgröße
        
var schriftgroesse 10;
// schrift fett?
        
var schriftfett 1;
// schrift kursiv?
        
var schriftkursiv 0;
// schrift unterstrichen?
        
var schriftunterstrichen 0;
// textausrichtung
        
var textausrichtung "left";
/*+++++++++++++++++++++++++++++++ der balken +++++++++++++++++++++++++++++++++
zuerst wird dynamisch ein leerer movieclip erzeugt
in diesem movieclip wird der balken per flash-drawing-api erzeugt: alpha, farbe, höhe, breite
*/
        
_root.createEmptyMovieClip("balken_mc",1);
// x-position des balkens
        
balken_mc._x startx;
// y-position des balkens
        
balken_mc._y starty;
//zeichnen des balkens
        
with(balken_mc){
        
beginFill(farbe,alpha);
        
lineTo(0,hoehe);
        
lineTo(breite,hoehe);
        
lineTo(breite,0);    
        
lineTo(0,0);
        
endFill();
        };
/*
++++++++++++++++++++++++++++++ die anzeige +++++++++++++++++++++++++++++++++
schleife zur erzeugung der textfelder fuer die anzeige der kilobytes, prozent und der zeit
*/    
         
for(var 1;<= 5;i++){
//erzeugt ein textfeld mit der instanz "anzeige+i" an einer vorgegebenen position
         
_root.createTextField("anzeige"+i,20+i,startx,starty+(20*i),300,20);
         
//formatierung der anzeigetexte
         
anzeigeformat = new TextFormat();
         
anzeigeformat.color textfarbe;
         
anzeigeformat.font schriftart;
         
anzeigeformat.size schriftgroesse;
         
anzeigeformat.bold schriftfett;
         
anzeigeformat.italic schriftkursiv;
         
anzeigeformat.underline schriftunterstrichen;
         
anzeigeformat.align textausrichtung;
         }

//variablen fuer die anzeige
         
_root.onEnterFrame = function(){
// gesamtbytes der zu ladenden datei
         
var _root.ziel.getBytesTotal();
// bereits geladene bytes
         
var _root.ziel.getBytesLoaded();
// timer für die zeitanzeige
         
var st getTimer();
// rundung der auf gerade zahlenwerte
         
var rt Math.round((st-at)/1000);
         var 
et Math.round((t*rt)/g);
         var 
ct Math.round(-(rt-et));
// wenn geladene bytes mit gesamtbytes übereinstimmen
         
if(== && g>50){
// werden durch eine schleife alle vorhandenen textfelder gelöscht     
         
for(var 1;<= 5;i++){
            
_root["anzeige"+i].removeTextField();
         }
// der balken wird ebenfalls gelöscht
         
balken_mc.clear();
// die onEnterFrame-Anweisung wird aus performancegründen auch gelöscht
         
delete this.onEnterFrame;
         
_root.ziel._visible false;
         }
// wenn geladene bytes mit gesamtbytes nicht übereinstimmen, wird prozentwert des ladefortschritts angezeigt
         
else {var = (g/t)*100;
    
// definition der anzeigefelder (texthäppchen)
         
anzeige1.text "Es wurden "+Math.round(g/1024)+" Kb von "+Math.round(t/1024)+" Kb geladen";
         
anzeige1.setTextFormat(anzeigeformat);
         
anzeige2.text "Das sind nach Adam Riese "+Math.round(a)+" %";
         
anzeige2.setTextFormat(anzeigeformat);
         
anzeige3.text "Die abgelaufene Zeit beträgt "+rt+" Sekunden";
         
anzeige3.setTextFormat(anzeigeformat);
         
anzeige4.text "Sie müssen sich noch ca. "+ct+" Sekunden gedulden";
         
anzeige4.setTextFormat(anzeigeformat);
// balken wird proportional zum prozentwert des ladefortschrittes skaliert
         
balken_mc._xscale a;
        }



Geändert von rolmo (07-12-2005 um 12:56 Uhr)
rolmo ist offline   Mit Zitat antworten
Alt 07-12-2005, 13:00   #2 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
Hmmm... also sofern nicht alle Bilder geladen werden, liegts wohl hierran:
PHP-Code:
for (i=1i<=_global.anzahli++) {
zielfilm[i] = "bilder/bild"+i+".jpg";
_root.ziel.loadMovie(zielfilm[i]);

Du überschreibst bei jedem Durchlauf der Schleife den in den MC "ziel" geladenen Film! Ausserdem ist dein Array zielfilm[i] nutzlos, sofern du es nicht später nochmal brauchen wirst! Um das ganz zu lösen, könnte es so aussehen:

PHP-Code:
for(i=1<=_global.anzahli++) {
_root.createEmptyMovieClip("ziel"+ii);
_root["ziel"+i].loadMovie("bilder/bild"+i+".jpg");

__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 07-12-2005, 15:48   #3 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Beiträge: 37
Zitat:
Zitat von bamboocha
Du überschreibst bei jedem Durchlauf der Schleife den in den MC "ziel" geladenen Film! Ausserdem ist dein Array zielfilm[i] nutzlos, sofern du es nicht später nochmal brauchen wirst!
danke. stimmt ich brauche das array so später im film nicht wieder. ich will nur die bilder in den cache des users laden damit diese sogleich bei ihn angezeigt werden. ich will eigentlich noch nicht mal einen neuen movieclip dafür erstellen.
rolmo ist offline   Mit Zitat antworten
Alt 07-12-2005, 16:24   #4 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
...ohne neuen MC kommst du da aber nicht weit. Kannste ja wieder löschen, wenn das Bild geladen wurde und anzeigen brauchst du den auch nicht (_alpha = 0).
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 08-12-2005, 07:58   #5 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Beiträge: 37
mal ne dumme frage: wie bekomme ich dann getBytesTotal(); und getBytesLoaded(); von all den neuerstellten mc's zusammen? müsste ich dann nochmal eine for-schleife reinbasteln?
rolmo ist offline   Mit Zitat antworten
Alt 08-12-2005, 11:30   #6 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hallo.
So z.B.:
PHP-Code:
var anzahl 20;
for (var 
0i<anzahli++) {
    
mc this.createEmptyMovieClip("mc"+ii);
    
mc._alpha 0;
    
wat this.createEmptyMovieClip("watcher"+i100+i);
    
wat.mc;
    
mc.loadMovie("bilder/bild"+i+".jpg");
    
wat.onEnterFrame = function() {
        if (
this.t.getBytesLoaded()>=this.t.getBytesTotal() && this.t.getBytesLoaded()>10) {
            
removeMovieClip(this.t);
            
removeMovieClip(this);
        }
    };

Und komm mir jetzt nicht mit "ich seh da aber nix..."
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 09-12-2005, 11:07   #7 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Beiträge: 37
ich habe nun versucht meinen preloader darauf jetzt anzupassen. es sieht ziemlich wirr und unübersichtlich aus. ich hoffe mir kann jemand helfen diesen zu entwirren.

PHP-Code:
for (var 1i<=_global.anzahli++) { 
    
zielfilm this.createEmptyMovieClip("ziel"+ii); 
    
zielfilm._alpha 0
    
wat this.createEmptyMovieClip("watcher"+i100+i); 
    
wat.mc
    
zielfilm.loadMovie("bild"+i+".jpg"); 
    
wat.onEnterFrame = function() { 
         var 
_root.ziel.getBytesTotal();
         var 
_root.ziel.getBytesLoaded();
         var 
st getTimer();
         var 
rt Math.round((st-at)/1000);
         var 
et Math.round((t*rt)/g);
         var 
ct Math.round(-(rt-et));
        if (
this.m.getBytesLoaded()>=this.m.getBytesTotal() && this.m.getBytesLoaded()>10) { 
            
removeMovieClip(this.m); 
            
removeMovieClip(this); 
            for(var 
i=1i<=2i++){
                
_root["anzeige"+i].removeTextField();
            }
            
balken_mc.clear();
            
gotoAndStop(3);
            
delete this.onEnterFrame;
        } 
        else {
        var 
= (g/t)*100;
        
anzeige1.text Math.round(g/1024)+"kb von "+Math.round(t/1024)+"kb";
        
anzeige1.setTextFormat(anzeigeformat);
        
anzeige2.text Math.round(a)+"%";
        
anzeige2.setTextFormat(anzeigeformat);
        
balken_mc._xscale a;
        }
    }; 

rolmo ist offline   Mit Zitat antworten
Alt 09-12-2005, 12:32   #8 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Hab's jetzt nur überflogen. Auf jeden Fall solltest du dem "watcher" auch den zielfilm übergeben und nicht "mc" (wo immer das herkommen soll...):
PHP-Code:
wat.zielfilm
Das "gotoAndStop(3)" mach so auch keinen Sinn, da du nach dem ersten geladenen Bild schon in Frame 3 springen würdest. Es sei denn, du willst das so...
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 09-12-2005, 14:57   #9 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Beiträge: 37
ok ich hab jetzt die offensichtlichen fehler gebessert. er kommt trotzdem nicht vorwärts. keine anzeige oder dergleichen.

PHP-Code:
for (var 1i<=_global.anzahli++) { 
    
zielfilm this.createEmptyMovieClip("ziel"+ii); 
    
zielfilm._alpha 0
    
wat this.createEmptyMovieClip("watcher"+i100+i); 
    
wat.zielfilm
    
zielfilm.loadMovie("bild"+i+".jpg"); 
    
wat.onEnterFrame = function() { 
        var 
this.m.getBytesTotal();
        var 
this.m.getBytesLoaded();
        var 
rt Math.round((st-at)/1000);
        if (
>= && 10) { 
            
removeMovieClip(this.m); 
            
removeMovieClip(this); 
            for(var 
i=1i<=2i++){
                
_root["anzeige"+i].removeTextField();
            }
            
balken_mc.clear();
            
delete this.onEnterFrame;
        } else {
        var 
= (g/t)*100;
        
anzeige1.text Math.round(g/1024)+"kb von "+Math.round(t/1024)+"kb";
        
anzeige1.setTextFormat(anzeigeformat);
        
anzeige2.text Math.round(a)+"%";
        
anzeige2.setTextFormat(anzeigeformat);
        
balken_mc._xscale a;
        }
    }; 

rolmo ist offline   Mit Zitat antworten
Alt 18-12-2005, 03:33   #10 (permalink)
Neuer User
 
Registriert seit: Nov 2005
Beiträge: 41
Nur ne kleine Frage:
Klappt es mittlerweile mit deinem Preloader?
Habe dasselbe Probem und es klappt einfach nicht.

Hier der Link

Wahrscheindlich ein kleines Problem für die Masters hier im Forum [".."+i]??
Globi468 ist offline   Mit Zitat antworten
Alt 18-12-2005, 15:21   #11 (permalink)
Neuer User
 
Registriert seit: Dec 2005
Beiträge: 37
Zitat:
Zitat von Globi468
Nur ne kleine Frage:
Klappt es mittlerweile mit deinem Preloader?
Habe dasselbe Probem und es klappt einfach nicht.

Hier der Link

Wahrscheindlich ein kleines Problem für die Masters hier im Forum [".."+i]??
leider nein...habe es aufgegeben...was mir aber noch aufgefallen ist dass die schleife wie bei einem einfachen loadmovie losgelöst von dem onEnterFrame-inhalt stehen muss - also nicht da drinnen oder drumherum...nun müsste es nur noch möglich sein die inhalte die in der for-schleife erzeugt werden in eine variable also einen "watcher" wie oben zusammen zu fassen...vielleicht mit einem array das innerhalb der for-schleife gefüllt wird und onEnterFrame ausgezählt wird...sag bescheid wenns bei dir klappt!
rolmo 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 02:30 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele