Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 16-09-2006, 20:42   #1 (permalink)
Neuer User
 
Registriert seit: Mar 2006
Beiträge: 139
Question externe SWFs preloaden

nabend Leute,

ich weiß das Thema Preloader ist ein oftmals durchgekautes, leider hab ich aus all den bisherigen Topics nichts zusammengebracht / gefunden, viell kann mir einer helfen...

ich lade ein externes SWF von ca. 400kb in ein Platzhalter-MC im Haupt-File (welches wiederum in anderen verschachtelt ist).
Dieses Platzhalter-MC ist irgendwo in den Tiefen des Files plaziert (drum kein createemptyMC).

ich würde nun gerne für dieses externe File nen Preloader einbauen, ich hab interne/externe versucht, auch den Preloader in das externe SWF einbauen auf Bild1. leider ohne Erfolg... entweder der tut nichts, oder der loader bleibt stehen,...

bitte um Rat und Wissen (wo der am sinnvollsten wäre, usw..)

merci
skamarkus ist offline   Mit Zitat antworten
Alt 17-09-2006, 04:29   #2 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
PHP-Code:
//von der Hauptzeitleiste aus:
con _level0.meinMC.meinverschachtelterMC;//Referenz auf den Ziel-MC
con.loadMovie("meinFilm.swf");//in diesen MC einen Film nachladen


this.onEnterFrame = function(){//kontinuierlich überprüfen, ob das Laden beendet ist
    
var prozent int(_level0.con.getBytesLoaded()*100/_level0.con.getBytesTotal());//Prozentwert errechnen
    
if(prozent >= 100 && _level0.con._width && _level0.con._height>0) {//wenn alles geladen wurde und der Containerfilm eine Breite und Höhe hat...
        
delete this.onEnterFrame;//dann den jetzt überflüssigen Event löschen
        //und hier kann es weitergehen
    
}

Wenn der Preloader nicht von der Hauptzeitleiste gestartet wird, solltest du natürlich die Objektpfade anpassen.
  Mit Zitat antworten
Alt 17-09-2006, 10:03   #3 (permalink)
Neuer User
 
Registriert seit: Mar 2006
Beiträge: 139
ok, mal schaun, das war von den anderen preloader die ich gesehen hab eigentlich eh alles verständlich...

mich stellts auf wenn ich überleg wo die grafischen elemente hingehören:

auf der Hauptzeitleiste habe ich einen MC-Container für quasi "alles".
in diesem MC-Container befindet sich die Elemente die drüber sind als auch der Platzhalter_mc, in den die Grafik nachgeladen wird.


// edit: zum Verständnis... ich kann preloader-zeux (ladebalken, etc..) nicht in den Container rein, weil der Container 2000x2000 px groß ist und im Bild davor je nach Selektion verschoben wird, der preloader wär dann immer irgendwo....

Geändert von skamarkus (17-09-2006 um 10:18 Uhr)
skamarkus ist offline   Mit Zitat antworten
Alt 17-09-2006, 10:30   #4 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Was genau ist eigentlich dein Problem?
  Mit Zitat antworten
Alt 17-09-2006, 11:17   #5 (permalink)
Neuer User
 
Registriert seit: Mar 2006
Beiträge: 139
wenn ich das immer adequat erklären könnte

nachdem ich den preloader punktuell nun zum laufen und funktionieren gebracht habe, und ich den natürlich an mehreren stellen brauchen könnt, hab nun das hier gebastelt und modifiziert:

PHP-Code:
_global.preloaderei = function(zielpfad_str:Stringplatzhalter_str:String){
    
    
_root.createEmptyMovieClip("pre_mc"0);
    
_root.pre_mc.attachMovie("Preloader""Preloader_mc"this.getNextHighestDepth());
    
//Kürzel schaffen
    
con platzhalter_str;
    
    
//Externen Film laden
    
con.loadMovie(zielpfad_str+".swf");
    var 
kbgeladen_num:Number;
    var 
kbgesamt_num:Number;
    
//Regelmäßiger Funktionsaufruf
    
var id setInterval(pruefen100);
    function 
pruefen() {
        
//Geladene Bytes, umgewandelt in Kilobyte
        
kbgesamt_num Math.round(con.getBytesTotal() / 1024);
        
_root.pre_mc.Preloader_mc.kbgesamt_str kbgesamt_num.toString();
        
kbgeladen_num Math.round(con.getBytesLoaded() / 1024);
        
trace (kbgeladen_num);
        
_root.pre_mc.Preloader_mc.kbgeladen_str kbgeladen_num.toString();
        
_root.pre_mc.Preloader_mc.balken_mc._width Math.round((kbgeladen_num kbgesamt_num) * 200);
        if (
kbgeladen_num && kbgeladen_num == kbgesamt_num) {
            
clearInterval(id);
            
removeMovieClip(_root.pre_mc.Preloader_mc);
        }
    }
}; 
hinzuladen funktioniert alles pippifein nur der preloader kommt wieder nicht daher...
skamarkus ist offline   Mit Zitat antworten
Alt 17-09-2006, 11:22   #6 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Zitat:
con = platzhalter_str;

//Externen Film laden
con.loadMovie(zielpfad_str+".swf");
Das funzt auch nicht, da platzhalter_str ein String und kein MC ist...
  Mit Zitat antworten
Alt 17-09-2006, 11:31   #7 (permalink)
Neuer User
 
Registriert seit: Mar 2006
Beiträge: 139
//edit: u're right

hab noch wo anders den aufruf gehabt...

bitte wo kann man _global-Funktionen hintun und von wo kann man sie dann aufrufen...

da gibt es immer seltsame Dinge dass sie mal gehen, dann wieder nicht, die müssen doch nicht auf gleicher Höhe sein oder gleicher Ebene?

Geändert von skamarkus (17-09-2006 um 11:48 Uhr)
skamarkus ist offline   Mit Zitat antworten
Alt 17-09-2006, 12:21   #8 (permalink)
Neuer User
 
Registriert seit: Mar 2006
Beiträge: 139
Zitat:
Zitat von agedoubleju Beitrag anzeigen
Das funzt auch nicht, da platzhalter_str ein String und kein MC ist...
bis nun hab ich es mit [string] immer geschafft dyn. Pfade zu basteln...
wie z.B. con = _root[stringname_str]


hier bei
PHP-Code:
con.getBytesTotal() 
geht das leider nicht (nimmt den Pfad eben nicht)

und [stringname_str].Funktion geht normalerweise schon (z.B. [stringname_str].gotoAndPlay), nur bei getBytesTotal kommen keine Werte getraced....

wie handhabst du/ihr das mit dynamischen Angaben?

Geändert von skamarkus (17-09-2006 um 12:27 Uhr)
skamarkus ist offline   Mit Zitat antworten
Alt 17-09-2006, 12:25   #9 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Eigentlich beantwortest du deine Frage selbst:

PHP-Code:
_root[con].getBytesTotal() 
//oder
this[con].getBytesTotal() 
//oder
eval(con).getBytesTotal() 
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 17-09-2006, 12:49   #10 (permalink)
Neuer User
 
Registriert seit: Mar 2006
Beiträge: 139
ja das war mir eigentlich klar weil ich so strings immer anwende, nur halt vom Bsp. jetzt falsch übernommen...

also geladen wird das Externe SWF immer, wenn ich es so lasse steht im Preloader (der kommt nun auch immer) bei den Textfeldern "NaN" (also Pfadproblem)... ich versteh es einfach nicht...

das [platzhalter_str] beinhaltet "_root.Container_mc" ... wenn ich das händisch schreibe, also _root.Container_mc.getBytesTotal() funktioniert es auch... dann dachte ich oke, von der Funktion ist der Parameter nur dafür und er geht nicht in der function pruefen, also eine temp-var eingezogen - ohne Erfolg...

die Adressierung mit den [] geht normalerweise immer, siehe auch loadMovie - ohne Probs, darum versteh ich es nun nicht (vielleicht weil in Math.round() ??? )

PHP-Code:
_global.preloaderei = function(zielpfad_str:Stringplatzhalter_str:String){

    
trace("PREEEEEEEEELOADEREI: ");

    
_root.createEmptyMovieClip("pre_mc"500);
    
_root.pre_mc.attachMovie("Preloader""Preloader_mc"this.getNextHighestDepth(),{_x:400_y:300});
    
    var 
tempplatz_str:String platzhalter_str;
    
trace("TEMP: "+tempplatz_str);
    
//Externen Film laden
    
loadMovie(zielpfad_str+".swf",[platzhalter_str]);
    var 
kbgeladen_num:Number;
    var 
kbgesamt_num:Number;
    
    
//Regelmäßiger Funktionsaufruf
    
var id setInterval(pruefen100);
    function 
pruefen() {
        
//Geladene Bytes, umgewandelt in Kilobyte
        
kbgesamt_num Math.round([tempplatz_str].getBytesTotal() / 1024);
        
_root.pre_mc.Preloader_mc.kbgesamt_str kbgesamt_num.toString();
        
kbgeladen_num Math.round([tempplatz_str].getBytesLoaded() / 1024);
        
trace (kbgeladen_num);
        
_root.pre_mc.Preloader_mc.kbgeladen_str kbgeladen_num.toString();
        
_root.pre_mc.Preloader_mc.balken_mc._width Math.round((kbgeladen_num kbgesamt_num) * 200);
        if (
kbgeladen_num && kbgeladen_num == kbgesamt_num) {
            
clearInterval(id);
            
removeMovieClip(_root.pre_mc);
        }
    }
}; 
skamarkus ist offline   Mit Zitat antworten
Alt 17-09-2006, 12:58   #11 (permalink)
................
 
Benutzerbild von Der Frager
 
Registriert seit: Jun 2004
Beiträge: 15.890
Bei einer Pfadangabe mit Punkten (also mehr als ein MC) geht's nur mit eval.
__________________

ternärer Konditionaloperator

+++ Bitte keine Privat-Nachrichten bezüglich Flashfragen! +++
Der Frager ist offline   Mit Zitat antworten
Alt 17-09-2006, 13:05   #12 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Ich frag mich nur, warum du da so umständlich mit Stringvariablen statt MC-Bezeichnern arbeitest...
PHP-Code:
function preloaderei (filename,con){
   
trace("PREEEEEEEEELOADEREI:");
   
_root.createEmptyMovieClip("pre_mc"500);
   
_root.pre_mc.attachMovie("Preloader""Preloader_mc"this.getNextHighestDepth(),{_x:400_y:300});
    
     
//Externen Film laden
    
con.loadMovie(filename+".swf");
    
this.onEnterFrame = function(){//kontinuierlich überprüfen, ob das Laden beendet ist
       
var prozent int(con.getBytesLoaded()*100/con.getBytesTotal());//Prozentwert errechnen
       
if(prozent >= 100 && con._width && con._height>0) {//wenn alles geladen wurde und der Containerfilm eine Breite und Höhe hat...
        
delete this.onEnterFrame;//dann den jetzt überflüssigen Event löschen
        //und hier kann es weitergehen
       
}
     }
}


//gleich die Instanznamen übergeben
preloaderei ("meinFilm",_root.Container_mc); 

Geändert von agedoubleju (17-09-2006 um 13:08 Uhr)
  Mit Zitat antworten
Alt 17-09-2006, 13:08   #13 (permalink)
Neuer User
 
Registriert seit: Mar 2006
Beiträge: 139
ich wusste nicht, dass man auch mit MC übergeben kann

ist diese Art konform den Regeln von AS2 (wenn ich richtig lieg?)
also so wie die fixe Typenadressierung ( var temp_str:String)

Geändert von skamarkus (17-09-2006 um 13:12 Uhr)
skamarkus ist offline   Mit Zitat antworten
Alt 17-09-2006, 13:09   #14 (permalink)
agedoubleju
Gast
 
Beiträge: n/a
Na ja, du übergibst ja nicht tatsächlich den MC, sondern nur eine Referenz, bzw. den Instanznamen.
  Mit Zitat antworten
Alt 17-09-2006, 13:14   #15 (permalink)
Neuer User
 
Registriert seit: Mar 2006
Beiträge: 139
gleich die nächste frage:

wann sollen funktionen _global sein, wann nicht, also wie weit erstreckt sich der funktionsbereich einer nicht globalen? solang wie auf der ebene kein neues schlüsselbild kommt?

vielen lieben dank für die vielen gelösten fragen
skamarkus 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 09:05 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele