Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 16-01-2006, 15:44   #1 (permalink)
Neuer User
 
Registriert seit: Nov 2004
Beiträge: 175
Arrow Bilder in Cache laden

Hallo Forum,

in letzter Zeit kamen häufiger Anfragen für einen Preloader, der mehrere externe Bilder in den Cache lädt, um sie von da aus für einen späteren Zeitpunkt im Film verfügbar zu halten.
Hier mal zwei Beispiellinks von Leuten die das selbe Problem haben (leider bisher ungelöst):
preloader für mehrere externe bilder
Wahrscheindlich ein kleines Problem für die Masters hier im Forum [".."+i]??

Meine Ansätze gehen in ähnliche Richtung waren aber bisher ebenso erfolglos.
Ich hoffe hiermit trotz der zigtausend Beiträge zum Thema preloader Hilfe zu finden.

Danke,
Chris
*perplex* ist offline   Mit Zitat antworten
Alt 16-01-2006, 15:54   #2 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Was soll denn da "nicht gelöst" worden sein. Das Bild bzw. die Bilder müssen einmal geladen werden. Dann sind sie im Cache. Was hier dran
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); 
        } 
    }; 

nicht funzen soll, kapiere ich nicht.
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 16-01-2006, 17:28   #3 (permalink)
Neuer User
 
Registriert seit: Nov 2004
Beiträge: 175
Hallo Der Frager,
danke für Dein schnelles Feedback.
Mein Problem ist, dass der Preload mit diesem Script nicht funktioniert. Gerne glaube ich Dir, dass es nicht am Script liegt. Eventuell hab ich einen Fehler beim Einbau gemacht. Habe mal eine Dummy-Fla angehängt. Das Script liegt auf dem 5. Schlüsselbild in der Ebene "as animation" wenn Du Dir es mal anschauen möchtest.

Gruß
Chris
Angehängte Dateien
Dateityp: zip dummy.zip (23,1 KB, 12x aufgerufen)
*perplex* ist offline   Mit Zitat antworten
Alt 17-01-2006, 16:57   #4 (permalink)
Neuer User
 
Registriert seit: Nov 2004
Beiträge: 175
Hallo,

hat keiner von Euch ne Idee? Oder sollte das technisch nicht machbar sein?! Lasst es mich bitte wisssen.

Danke,
Chris
*perplex* ist offline   Mit Zitat antworten
Alt 17-01-2006, 17:22   #5 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Einmal noch:
PHP-Code:
stop();
var 
anzahl 20;
var 
0;
for (var 
0i<anzahli++) {
    
mc this.createEmptyMovieClip("mc"+ii);
    
mc._alpha 0;
    
wat this.createEmptyMovieClip("watcher"+i100+i);
    
wat.mc;
    
mc.loadMovie(i+".jpg");
    
wat.onEnterFrame = function() {
        if (
this.t.getBytesLoaded()>=this.t.getBytesTotal() && this.t.getBytesLoaded()>10) {
            
trace(this.t+" geladen");
            if (++
== anzahl) {
                
trace("Alle Bilder im Cache...");
                
//machwas
            
}
            
removeMovieClip(this.t);
            
removeMovieClip(this);
        }
    };

Habe mir jetzt dein Script nicht zwar nicht angeguckt, aber eigntlich erklärt sich der Kram jetzt selbst.
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 17-01-2006, 18:08   #6 (permalink)
Neuer User
 
Registriert seit: Nov 2004
Beiträge: 175
Hallo,
die Sache bleibt weiterhin mysteriös! Hab mein Script Deinem angeglichen.
Allerdings verstehe ich das "++x" nicht so ganz. Damit blieb er sogar offline immer hängen und hat das trace("Alle Bilder im Cache..."); gar nicht erst angezeigt. Hab das ganze dann nochmal folgendermaßen abgeändert:
PHP-Code:
stop();
var 
anzahl 8;
//var x = 0;
for (var 1i<anzahli++) {
    
mc this.createEmptyMovieClip("mc"+ii);
    
mc._alpha 0;
    
wat this.createEmptyMovieClip("watcher"+i100+i);
    
wat.mc;
    
mc.loadMovie("bild"+i+".jpg");
    
wat.onEnterFrame = function() {
        if (
this.t.getBytesLoaded()>=this.t.getBytesTotal() && this.t.getBytesLoaded()>10) {
            
trace(this.t+" geladen");
            if (
== anzahl) {
                
trace("Alle Bilder im Cache...");
                
gotoAndPlay(_currentframe+1);
            }
            
removeMovieClip(this.t);
            
removeMovieClip(this);
        }
    };

Dachte für einen Moment, dass es das wär. Die Ernüchterung kam dann online.
---------------------------
@ Der Frager
Nachträglich noch alles Gute zum Geburtstag

Geändert von *perplex* (17-01-2006 um 18:27 Uhr)
*perplex* ist offline   Mit Zitat antworten
Alt 18-01-2006, 12:28   #7 (permalink)
Neuer User
 
Registriert seit: Nov 2004
Beiträge: 175
Hallo,

nützt es Euch vielleicht etwas, wenn ich die geänderte fla noch mal online stelle?

Gruß
Chris
*perplex* ist offline   Mit Zitat antworten
Alt 18-01-2006, 13:09   #8 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
i ist ja auch sofort == anzahl bzw. sobald die Schleife durch ist.
Werden denn überhaupt alle Bilder gefunden? Sonst kann's ja nicht gehen. Wenn du 8 Bilder laden willst und die mit bild1 anfangen, dann muss das so aussehen:
PHP-Code:
for (var 1i<=anzahli++) { 
Sonst stimmt die Anzahl nie mit x überein. Also quasi so:
PHP-Code:
stop(); 
var 
anzahl 20
var 
0
for (var 
1i<=anzahli++) { 
    
mc this.createEmptyMovieClip("mc"+ii); 
    
mc._alpha 0
    
wat this.createEmptyMovieClip("watcher"+i100+i); 
    
wat.mc
    
mc.loadMovie("bild"+i+".jpg"); 
    
wat.onEnterFrame = function() { 
        if (
this.t.getBytesLoaded()>=this.t.getBytesTotal() && this.t.getBytesLoaded()>10) { 
            
trace(this.t+" geladen"); 
            if (++
== anzahl) { 
                
trace("Alle Bilder im Cache..."); 
                
//machwas 
this._parent.play()
            } 
            
removeMovieClip(this.t); 
            
removeMovieClip(this); 
        } 
    }; 

edit: Danke - ja, bin ein alter Sack...
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++

Geändert von Der Frager (18-01-2006 um 13:16 Uhr)
Der Frager ist offline   Mit Zitat antworten
Alt 18-01-2006, 14:51   #9 (permalink)
Neuer User
 
Registriert seit: Nov 2004
Beiträge: 175
@ Der Frager,

habe endlich meinen Fehler erkannt. Saß da ganz schön auf dem Schlauch, o Mann!
Da ich mehrere Bilder mit unterschidlichen Paramertern (ausser der Zahl (i)) laden muss habe ich die Variable mc mehrfach belegt:
PHP-Code:
mc.loadMovie("bild"+i+".jpg");    // die großen Bilder
mc.loadMovie("bild"+i+"a.jpg");    // noch mehr große Bilder
mc.loadMovie("tn"+i+".jpg");    // die kleinen Thumbnails 
Dadurch hat er nur die letzten, sprich die Thumbnails geladen und den Rest natürlich nicht, da ich mc ja überschrieben habe. Ich Depp!
Wie kann ich das denn noch lösen?

Gruß,
Chris
*perplex* ist offline   Mit Zitat antworten
Alt 18-01-2006, 15:36   #10 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Aha!

Gut, wenn ich jetzt nen Hammer nehmen würde, um das was da schon steht zurecht zu kloppen, dann sähe das danach so aus:
PHP-Code:
stop();
var 
anzahl 1;
var 
0;
var 
0;
function 
preload(vornach) {
    for (var 
1i<=anzahli++) {
        
mc this.createEmptyMovieClip("mc"+ii);
        
mc._alpha 0;
        
wat this.createEmptyMovieClip("watcher"+i100+i);
        
wat.mc;
        
mc.loadMovie(vor+i+nach+".jpg");
        
wat.onEnterFrame = function() {
            if (
this.t.getBytesLoaded()>=this.t.getBytesTotal() && this.t.getBytesLoaded()>10) {
                
trace(this.t+" geladen");
                
removeMovieClip(this.t);
                
removeMovieClip(this);
                if (++
== anzahl) {
                    if (
== 0) {
                        
y++;
                        
0;
                        
preload("bild""a");
                    } else if (
== 1) {
                        
y++;
                        
0;
                        
preload("tn""");
                    } else if (
== 2) {
                        
trace("Alle Bilder im Cache...");
                        
this._parent.play();
                    }
                }
            }
        };
    }
}
preload("bild"""); 
Ich will nix hören...
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 18-01-2006, 16:30   #11 (permalink)
Neuer User
 
Registriert seit: Nov 2004
Beiträge: 175
ok... nur soviel noch. Es funktioniert! und ich glaube sogar es verstanden zu haben.

DANKE!!!!!!!!
Chris
*perplex* ist offline   Mit Zitat antworten
Alt 18-01-2006, 17:17   #12 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Zitat:
Zitat von *perplex*
Es funktioniert!
Na endlich! *Schweiß.von.Stirn.wisch*
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 18-01-2006, 18:25   #13 (permalink)
Neuer User
 
Registriert seit: Jan 2006
Beiträge: 7
der code oben ist echt sehr nützlich, danke erstmal.
wenn ich jetzt da drei bilder geladen habe, wie kann ich die in 3 verschiedenen frames anzeigen lassen (so eine art animated-gif mit flash)?
ich bin noch ein ziemlicher flash newbie weil ich normalerweise nichts damit mache,aber jetzt habe ich keine wahl.irgendwelche links/hints oder sonstiges?
wäre sehr dankbar,

isti
issaries ist offline   Mit Zitat antworten
Alt 18-01-2006, 18:56   #14 (permalink)
Neuer User
 
Registriert seit: Nov 2004
Beiträge: 175
@issaries,
freut mich, dass es auch Dir nützt.
Erstelle einen MC und leg den in die 3 Frames. Vergebe Instanznamen (z.B. mcFrame1 bis mcFrame3) und lege auf der Hauptzeitleiste das jeweilige Script
1.Frame:
PHP-Code:
mcFrame1.loadMovie(bild1".jpg"); 
2.Frame:
PHP-Code:
mcFrame2.loadMovie(bild2".jpg"); 
3.Frame:
PHP-Code:
mcFrame3.loadMovie(bild3".jpg"); 
Gruß,
Chris
*perplex* 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 18:17 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele