Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 01-12-2006, 12:55   #1 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 28
Script zum MCs/bilder/ect. preloaden!

Hi,

Ich arbeite gerade an einer gallery und möchte dabei die thumbnail bilder preloaden, bevor er zu dem keyframe geht, der die thumbMCs kurz animiert.

Da mir die Scripte die ich zu dem Thema hier gefunden haben für den zweck zu komplex waren habe ich mir ein eigenes geschrieben, was eine erste Testphase bestanden hat. Ich bin mir allerdings nicht sicher ob das wirklich so geht, wie ich mir das gedacht habe, weshalb ich das script hier nochmal posten möchte.

PHP-Code:
// Erstellen der blind MCs für jeden der thumbnails, sowie das laden der Files aus einem Array
for(var i=0i<counti++){
this.createEmptyMovieClip("file"+ithis.getNextHighestDepth());
loadMovie(bild[i], this["file"+i]);
this["file"+i]._alpha 0;
}
// Preloaden der einzelnen Mcs. Bei mir hat es mit dem kurzen Code geklappt.
onEnterFrame = function(){
for(var 
b=0b<countb++){
this["gesamt"+b] = this["file"+b].getBytesTotal();
this["geladen"+b] = this["file"+b].getBytesLoaded();
if(
this["geladen"+b]>=this["gesamt"+b] && this["gesamt"+b] > 0){
trace("Bild"+b+" erfolgreich geladen!");
// setzt für jedes Bild true, sobald es geladen ist
this["fertig"+b] = true;
} else {
this["fertig"+b] = false;
}
// überprüft ob alle Bilder geladen sind
if(this["fertig"+b] == true){
delete this.onEnterFrame;
nextFrame();
}
}
}

ist das über diesen Weg überhaupt möglich? Da das onEnterFrame Event ja nicht überschrieben wird, dachte ich mir, dass es so klappen könnte!

MFG
moka

Geändert von moka (01-12-2006 um 12:59 Uhr)
moka ist offline   Mit Zitat antworten
Alt 01-12-2006, 13:04   #2 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Nee, das wird so nicht klappen, da sobald ein Bild fertig geladen ist, dein onEnterFrame ja gelöscht wird.

Nimm doch einen MovieClipLoader...
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 01-12-2006, 13:08   #3 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 28
Ah, erster fehler

Ok, die Überprüfung ob alle Thumbs geladen sind war schonmal falsch. Bei der ersten Version hat es gereicht, wenn nur 1 thumb fertig geladen war.

PHP-Code:
for(var i=0i<counti++){
this.createEmptyMovieClip("file"+ithis.getNextHighestDepth());
loadMovie(bild[i], this["file"+i]);
this["file"+i]._alpha 0;
}
this.fertig 0;
onEnterFrame = function(){
for(var 
b=0b<countb++){
this["gesamt"+b] = this["file"+b].getBytesTotal();
this["geladen"+b] = this["file"+b].getBytesLoaded();
if(
this["geladen"+b]>=this["gesamt"+b] && this["gesamt"+b] > 0){
trace("Bild"+b+" erfolgreich geladen!");
this.fertig += 1;

}
if(
this.fertig == count){
delete this.onEnterFrame;
}

bei dieser version wird der Fertig variable einfach eine Zahl hinzuaddiert, sobald ein Bild fertig geladen ist. Entspricht die geladene Anzahl der Anzahl der Bilder, wird die OnEnterFrame schleife entfernt.


*EDIT: At der Frager: Mit dem MovieclipLoader hab ich es schon probiert, mich aber garnicht damit anfreunden können. Müsste die Version so wie sie jetzt ist nich funktionieren?

MfG

Geändert von moka (01-12-2006 um 13:10 Uhr)
moka ist offline   Mit Zitat antworten
Alt 01-12-2006, 13:14   #4 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Klappt so auch nicht. Es sei denn, du setzt "this.fertig = 0" an den Anfang mit in die onEnterFrame-Funktion. sonst werden die fertig geladenen Bilder ja doppelt und dreifach und überhaupt gezählt.

Ich meinte übrigens sowas hier:
PHP-Code:
ml.onLoadInit = function(obj) {
    
trace(obj+" geladen!");
    if (--
count == 0) {
        
nextFrame();
        
trace("fertig...")
    }
};
//
var mcl = new MovieClipLoader();
mcl.addListener(ml);
//
for (var 0i<counti++) {
    var 
mc this.createEmptyMovieClip("file"+ithis.getNextHighestDepth());
    
mc._alpha 0;
    
mcl.loadClip(bild[i], mc);

__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 01-12-2006, 13:18   #5 (permalink)
class public{}
 
Benutzerbild von public
 
Registriert seit: Feb 2004
Ort: dessau
Beiträge: 1.406
so grad ma was aus m kopp getippt....kanns leider net testen, hab grad kein flash da...sollte aber auch leicht modifizierbar sein

PHP-Code:
function LoaderClass(){
    
this.onFinish;
    
this.onProgress;
    
this.target;
}
var 
lc=LoaderClass.prototype;
//
// load(path,target)
//
lc.load=function(path,target){
    var 
ref=this;
    if(
target==undefined){
        
target=_root;
    }
    
this.target=target;
    
this.target.loadMovie(path);
    
this.target.onEnterFrame=function(){
        
ref.onProgress();
        if(
ref.getPercentLoaded()>=100){
            
delete this.onEnterFrame;
            
ref.onFinish();
        }
    };
}
//
// getPercentLoaded()
//
lc.getPercentLoaded=function(){
    return 
this.target.getBytesLoaded()/this.target.getBytesTotal()*100;
};



//
// Einsatz
//
var loader=new LoaderClass();
loader.load("dein.jpg",container_mc);
loader.onProgress=function(){
    
ladeBalken_mc._width=this.getPercentLoaded();
}; 


EDIT: ...ma wieder zu langsam
public ist offline   Mit Zitat antworten
Alt 01-12-2006, 13:21   #6 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 28
achja, flüchtigkeitsfehler. Ich werde mich mal durch die Flash hilfe arbeiten, um in zukunft auf deine Version zurrückgreifen zu können.

Für den Moment werde ich erstmal bei meiner Version bleiben. Die ist ja vom code her auch noch überscihtlich.

Danke,

moka
moka ist offline   Mit Zitat antworten
Alt 01-12-2006, 13:26   #7 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 28
at: der Frager.

Ich hab deine Version einfach mal bei mir mit Copy und Paste reingemacht, und mein Script kommentiert. Bei mir passiert allerdings garnichts. Muss ich noch etwas anpassen?

MfG
moka ist offline   Mit Zitat antworten
Alt 01-12-2006, 13:30   #8 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Dein bild-Array und die Variable "count" brauchst du schon noch.

Außerdem funzt das nur, wenn du mindestens als Flash 7 und AS 2.0 veröffentlichst.

edit: Das Objekt "ml" vergessen...

1. Zeile:
PHP-Code:
var ml = {}; 
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 01-12-2006, 13:41   #9 (permalink)
Neuer User
 
Registriert seit: Feb 2004
Beiträge: 28
Ja, das ich das array und count noch brauche ist mir klar, hehe. Es funktioniert nun auch auf deine Weise (zumindest, das er zum nächsten frame geht, nachdem er alle geladen hat) allerdings funktioniert nun der rest irgendwie nicht.

Trotzdem vielen dank, ich hab ja zumindest eine version die funktioniert, und in deine werd ich mich mal reinarbeiten!

Danke,

moka

EDIT: SO, hab nun alle bugs behoben. Count wurde später nochmal verwendet, deshalb ging der Rest nicht mehr. Danke

Geändert von moka (01-12-2006 um 13:47 Uhr)
moka ist offline   Mit Zitat antworten
Alt 01-12-2006, 14:53   #10 (permalink)
class public{}
 
Benutzerbild von public
 
Registriert seit: Feb 2004
Ort: dessau
Beiträge: 1.406
haste mein script ma probiert?....mich würd nur ma intressieren obs funzt....wie gesagt hab grad kein flash zur hand
public ist offline   Mit Zitat antworten
Alt 01-12-2006, 14:57   #11 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
...allein das hier geht ja schon nicht:
PHP-Code:
this.target.loadMovie(path);
this.target.onEnterFrame = function() {
...
... 
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 01-12-2006, 15:55   #12 (permalink)
class public{}
 
Benutzerbild von public
 
Registriert seit: Feb 2004
Ort: dessau
Beiträge: 1.406
upps ....sorry....so ne fheler passieren, wenn man von der MovieClipLoader Klasse verwöhnt is....aber so gehts:
PHP-Code:
function LoaderClass () {
    
this.onProgress;
    
this.onFinish;
    
this.holder;
}
LoaderClass.prototype.load = function (pathtarget) {
    var 
ref this;
    
this.holder target;
    
trace (this.holder);
    
this.holder.loadMovie (path);
    var 
id setInterval (function () {
        
ref.onProgress ();
        
updateAfterEvent();
        if (
ref.getPercentLoaded () >= 100) {
            
ref.onFinish ();
            
clearInterval (id);
        }
    }, 
20);
};
LoaderClass.prototype.getPercentLoaded = function () {
    return 
this.holder.getBytesLoaded () / this.holder.getBytesTotal () * 100;
};






this.createEmptyMovieClip ("con"2);
var 
loader = new LoaderClass ();
loader.onProgress = function () {
    
trace (this.getPercentLoaded ());
};
loader.onFinish = function () {
    
trace ("fertsch");
};
loader.load ("test.jpg"con); 
public 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 05:25 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele