Zurück   Flashforum > Flash > ActionScript > ActionScript 1

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 24-02-2006, 09:23   #1 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 39
Preloader hat probleme

Hi.
Ich bin an einer rießigen Flash Präsentation für unsere Firma.
Die swf Datei hat jetzt schon eine größe von 70MB.
Ich habe einen Preloader in die ersten zwei Frames eingebaut.
Denn wenn ich den Film von einer CD starte dauert es 50sek bis er startet.
Nachdem ich den Preloader eingebaut habe, dachte ich, dass der Film nun früher startet und man die Prozentanzeige und bytes sieht.
Jedoch dauert es immer noch 50sek und der PreLoader wird übersprungen.

Hier ist das skript, das ich verwendet habe:

1. Frame:
bytes_gesamt = _root.getBytesTotal() add " Bytes gesamt";
bytes_geladen = _root.getBytesLoaded() add " Bytes geladen";
prozent = int(_root.getBytesLoaded()*100/_root.getBytesTotal()) add " Prozent";
if (prozent == "100 Prozent") {
gotoAndPlay (3);
}

2. Frame:
gotoAndPlay (1);



Was kann ich da machen? Ist das skript zu "einfach" und es ist eigentlich für den arsch?

Oder kann ich das Problem lösen, indem ich eine ganz kleine swf Datei erstelle,
in der erstmal dinge geklährt werden wie, fullscreen und allowscale. Und im zweiten Frame lädt dann mein eigentlicher film. Vielleicht wird dann der preloader funktionieren? Oder muss ich das gar nicht erst ausprobieren?
Marc Jech ist offline   Mit Zitat antworten
Alt 24-02-2006, 09:45   #2 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
Du kannst nicht einfach die Bytes-Anzahl von _root des Filmes abfragen, den du gerade lädst! Angezeigt wird erst, wenn alles geladen ist, sprich: da dein Preloader auch im Film drin ist, wird dieser erst abgespielt, wenn der Film fertig geladen ist. Da du im Preloader abfragst, wieviel schon geladen ist, dürfte es klar sein, dass er ihn "überspringt" (was er nicht tut - die Bedingung ist einfach erfüllt! )
Du musst so vorgehen:

Erstelle eine neue Datei.
Dort erstellst du einen Container, in den du deinen Riesen-SWF reinlädst (mit loadMovie())
Danach fragst du mit onEnterFrame ab, wieviel schon geladen ist! Also sowas:

PHP-Code:
//Inhalt von preload.swf
var ladeziel this.createEmptyMovieClip("inhalt"1);
ladeziel.loadMovie("riesenswf.swf");
var 
watch this.createEmptyMovieClip("watcher"2);
watch.onEnterFrame = function() {
    var 
geladen this._parent.ladeziel.getBytesLoaded();
    var 
total this._parent.ladeziel.getBytesTotal();
    var 
prozent Math.round(geladen/total*100);
    
//this._parent.ladebalken._xscale = prozent  //für nen optionalen Ladebalken oder so...
    
if(prozent >= 100 && geladen 10) {
        
delete this.onEnterFrame;
        
this.removeMovieClip();
    }

Also, einfach einen neuen Film erstellen. Im ersten Frame dieses Skript rein und fertig! (Weitere Frames brauchts net!)
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 26-02-2006, 10:01   #3 (permalink)
Neuer User
 
Benutzerbild von wickus
 
Registriert seit: Apr 2004
Beiträge: 14
Hallo,

habe das selbe Problem, nur ist mein Film nicht ganz so gross nur ca. 300kb aber bei ISDN ...
Der Preloader wie hier angegeben funktioniert auch, da ich aber hauptsächlich Bilder habe die ich von aussen geladen habe, scheint der Preloader trotzdem den Hauptfilm zu früh loszulassen.
Habe schon probiert alle Bilder in ein Frame im Hauptfilm zu legen, ging aber auch nicht, ist ja auch nicht wünschenswert.
Welche Möglichkeit gäbe es denn noch? Wie ist es wenn die per loadMovie geladenen Bilder im Browser gecached sind? Könnte das helfen?
wickus ist offline   Mit Zitat antworten
Alt 27-02-2006, 09:03   #4 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 39
bitte um weitere Erläuterung

Ich denke, dass ich es grob verstanden habe. Nur was ist das?

var watch = this.createEmptyMovieClip("watcher", 2);

Das ist ja eine Variable die zu irgendeinem Objekt gehört. Zu welchem?

Wie würde das denn aussehen, wenn der Film geladen hat, ein frame im preloader.swf nach vorne springt. damit die ganzen hintergründe nicht übereinander liegen.

Meine Vorgehensweiße:

Ich habe eine neue Datei Erstellt. Darin sind die ersten Hintergrund Bilder, damit ich nachher einen natlosenübergang habe.

Ebene1:
Ich erstelle ein Movieclip mit Instanznamen "ladeziel". Richtig?
In diesem Movieclip hat das erste Frame die loadmovie funktion für meine rießenswf.swf.

Ebene2:
Hier kommen die drei Textfelder rein. Mit den Variablen geladen,total und prozent. Textfelder auf dynamisch stellen.

Ebene3:
Das Skript

Wenn der Film nun geladen hat, sollte die Preloader.swf ein Frame weiterspringen. Wie ergänze ich das Skript?
Marc Jech ist offline   Mit Zitat antworten
Alt 27-02-2006, 09:28   #5 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
Zitat:
Zitat von Marc Jech
Ich denke, dass ich es grob verstanden habe.
Naja... ich werde es wohl doch noch ein bisschen erläutern...
Zitat:
Nur was ist das?

var watch = this.createEmptyMovieClip("watcher", 2);
Das ist nicht etwa eine Objektvariable, wie du vermutet hast, sondern lediglich eine Referenz auf den erstellten MovieClip. In der Flashhilfe siehst du beim Befehl "createEmptyMovieClip" als Rückgabewert "eine Referenz auf den erstellten MovieClip". Das heisst also nix anderes, als dass ich auch das schreiben könnte:
PHP-Code:
this.createEmptyMovieClip("watcher"2);
var 
watch this.watcher
Ist halt alles auf einer Zeile und erleichtert das weitere Arbeiten (vor Allem, wenn du mit dem Arbeiten mit dynamischen Namen beginnst...).
Zitat:
Zitat von Marc Jech
Ich habe eine neue Datei Erstellt. Darin sind die ersten Hintergrund Bilder, damit ich nachher einen natlosenübergang habe.
Würde ich nur bedingt so machen... Nämlich nur, wenn die Bilder selber nicht zu gross sind...

Zitat:
Zitat von Marc Jech
Ebene1:
Ich erstelle ein Movieclip mit Instanznamen "ladeziel". Richtig?
In diesem Movieclip hat das erste Frame die loadmovie funktion für meine rießenswf.swf.
Falsch! Wird automatisch gemacht! Nämlich hier:
PHP-Code:
var ladeziel this.createEmptyMovieClip("inhalt"1); 
ladeziel.loadMovie("riesenswf.swf"); 
Ausserdem würde ich auf das "ß" im Dateinamen verzichten! Weiss nicht, inwiefern Flash damit Mühe haben könnte...

Zitat:
Zitat von Marc Jech
Ebene2:
Hier kommen die drei Textfelder rein. Mit den Variablen geladen,total und prozent. Textfelder auf dynamisch stellen.
Wiederum falsch! Beziehungsweise nur bedingt. Du kannst dir natürlich sämtliche Werte in Textfelder ausgeben lassen (z.B zweizeilig:
Code:
127kb von 345 KB geladen
das sind 27%
). Kann aber auch weggelassen werden. Die Zuweisung der Variabeln "geladen", "total" sowie "prozent" dient lediglich dem internen Rechenvorgang.
Zitat:
Ebene3:
Das Skript

Wenn der Film nun geladen hat, sollte die Preloader.swf ein Frame weiterspringen. Wie ergänze ich das Skript?
Naja... da die beiden vorherigen Ebenen (unter Umständen --> Textfelder) wegfallen, würde das Skript in das erste (und einzige) Frame kommen. Ansonsten die Skriptebene immer ganz zuoberst.

Alles was ausgeführt werden soll, wenn das ganze fertig geladen ist, gehört in die if-Anweisung im onEnterFrame!
PHP-Code:
    if(prozent >= 100 && geladen 10) { 
        
delete this.onEnterFrame
        
this.removeMovieClip();
        
//alle weiteren Befehle, ausgehend von watcher!
        //ein Framewechsel sähe also so aus: this._parent.gotoAndStop(2); 
    

__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 27-02-2006, 09:55   #6 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 39
Ich werde gleich mal das ganze brennen, um zu sehen, ob es funktioniert.
Die Prozent anzeige sollte zumindest zu sehen sein, da ein betrachter sicherlich nach 15sek stillstand denkt, dass was kaputt sei.

In dem Fall könnte ich doch ein Textfeld machen mit der Variable Prozent? Oder fehlt im Skript dazu die ausgabe? Ja ich glaube die fehlt.

Die ersten Hintergrundbilder sind sehr klein. Deshalb lasse ich das drinnen.
Das ganze ist nachher eine CD Präsentation, fürs Internet viel zu groß.

Könntest du mir noch sagen, wie ich die Prozent anzeige zum laufen bekomme?
Marc Jech ist offline   Mit Zitat antworten
Alt 27-02-2006, 10:03   #7 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
kein Problem! Einfach auf der einen Ebene in einem MovieClip "tfelder" (erleichtert das spätere entfernen) Textfelder anlegen mit den Instanzennamen "tfgeladen", "tftotal" und "tfprozent". Da rein kommen dann die Variabeln (wird aber vom Script erledigt, daher keine Variabeln zuweisen!).
PHP-Code:
//Inhalt von preload.swf
stop();
var 
ladeziel this.createEmptyMovieClip("inhalt"1); 
ladeziel.loadMovie("riesenswf.swf"); 
var 
watch this.createEmptyMovieClip("watcher"2);
watch.onEnterFrame = function() { 
    var 
geladen this._parent.ladeziel.getBytesLoaded(); 
    var 
total this._parent.ladeziel.getBytesTotal(); 
    var 
prozent Math.round(geladen/total*100); 
    
this._parent.tfelder.tfgeladen geladen;
    
this._parent.tfelder.tftotal total;
    
this._parent.tfelder.tfprozent prozent;
    if(
prozent >= 100 && geladen 10) { 
        
delete this.onEnterFrame
        
this.removeMovieClip();
        
this._parent.tfelder.swapDepths(15000);
        
this._parent.tfelder.removeMovieClip();
    } 

So dürfte das funktionieren!
__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 27-02-2006, 13:22   #8 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 39
Also.
Ich habe das ganze jetzt gebrannt und ausprobiert. Jedoch passiert folgendes: Der Preloader.swf startet, hängt, und dann kommt der hauptfilm.
keine Anzeige der Prozente.

Vielleicht kannste mal rein schaun. Ich habe bestimmt irgendeinen mißt gemacht.
Angehängte Dateien
Dateityp: zip preloader.zip (4,0 KB, 8x aufgerufen)
Marc Jech ist offline   Mit Zitat antworten
Alt 27-02-2006, 13:27   #9 (permalink)
°.oO°O.o°.oO.o°O
 
Benutzerbild von bamboocha
 
Registriert seit: Jun 2005
Ort: CH
Beiträge: 1.490
1. Du brauchst keine 2 Frames! 1 reicht völlig! Die Schleife wird durch "onEnterFrame" erledigt!
2. MovieClip "tfelder" sollte auch diesen Instanzennamen tragen
3. Dito für Textfeld "tftotal"

__________________
There is no way to happiness, happiness is the way! - Buddha
bamboocha ist offline   Mit Zitat antworten
Alt 27-02-2006, 15:15   #10 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 39
ja gut, aber dann habe ich ja, wenn der riesensef.swf geladen wird den hintergrund vom Preloader immer noch drinn. Den mußte ich in der Datei entfernen, damit die datei nicht zu groß wird.

Ich könnte allerdings in meiner riesenswf.swf einen weißen Hintergrund machen, damit nix durchscheint.

Geändert von Marc Jech (27-02-2006 um 15:19 Uhr)
Marc Jech ist offline   Mit Zitat antworten
Alt 27-02-2006, 15:51   #11 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 39
Ich habe das ganze jetzt wieder gebrannt. Ich sehe aber immer noch keine Prozentangaben. Die Ani im Preloader läuft nicht und kurz bevor der hauptfilm startet, läuft die Preloader-ani ein Bild weiter.

Die Instaznamen habe ich vergeben, und auch nur ein Frame.
Marc Jech ist offline   Mit Zitat antworten
Alt 01-03-2006, 07:33   #12 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 39
Vielleicht ist das Problem gar nicht das Loading skript? Vielleicht ist das Problem, dass es sich dabei um eine CD Präsentation handelt? Die Skripte funktionieren nämlich alle, wenn ich sie im Internet benutze.
Jetzt bräuchte ich jemanden, der schon mal eine CD Präsentation gemacht hat.
Marc Jech ist offline   Mit Zitat antworten
Alt 06-03-2006, 08:42   #13 (permalink)
Neuer User
 
Registriert seit: Jul 2005
Beiträge: 39
Hat niemand eine Ahnung?
Marc Jech 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 03:40 Uhr.

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


Copyright ©1999 – 2012 Marc Thiele